Eu tenho uma tabela em um banco de dados do SQL Server com um índice em cluster na chave primária. A tabela possui 1 milhão de linhas. Se eu excluir 10 mil linhas da tabela, o índice será reestruturado durante a operação de exclusão?
A operação de exclusão faz parte do procedimento armazenado. Por vez, mais de um cliente pode estar executando o procedimento armazenado, no entanto, cada execução individual excluirá seu próprio conjunto de linhas (identificado exclusivamente pela chave primária). Estou bloqueando o bloqueio de teclas (do tipo U) quando vários clientes executam o procedimento. O bloqueio do bloqueador pertence a uma linha da mesma tabela e não faz parte de nenhuma transação em execução simultânea. Não deve haver nenhum bloqueio, pois cada execução está tentando excluir seu próprio conjunto de linhas. A escalação de bloqueio não está acontecendo, pois está desativada.
Suspeito que a operação de exclusão deva estar causando um reequilíbrio do índice e, portanto, durante o processo de reestruturação, ele pode bloquear a chave em qualquer linha da tabela.
Eu realmente aprecio qualquer opinião sobre isso.
fonte
Respostas:
Para responder à pergunta no título, se a árvore B se reequilibrou durante uma exclusão, a resposta parece ser negativa, pelo menos no seguinte caso de teste mínimo.
A demonstração a seguir executa comandos que são melhores para um ambiente de teste.
Esta demonstração mostra que uma exclusão pode produzir uma árvore b muito desequilibrada, com praticamente todos os dados de um lado.
fonte