Usuário com melhor resposta
Index HEAP

Pergunta
-
Respostas
-
Thenriquelima,
Uma tabela heap não possui uma ordenação definida, ela por si só define uma "ordenação" pela inclusão e manipulação de dados na tabela. Não é correto afirmar que uma tabela heap está fragmentada, porque ela não possui um critério de ordenação definido.
O ideal seria criar índices "clusterizados", definindo uma chave primária para cada tabela nesta situação. Caso não seja possível, crie ao menos um índice "não clusterizado" para otimizar suas principais consultas.
Para maiores informações sobre o assunto veja:
http://msdn.microsoft.com/en-us/library/ms190457.aspx
http://technet.microsoft.com/en-us/library/aa933131(v=sql.80).aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
-
Não é correto afirmar que uma tabela heap está fragmentada, porque ela não possui um critério de ordenação definido.
O conceito de fragmentação em Heaps existe e é chamado de "Forwarded Pointers".
Nesse link é possivel ler sobre isso:
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
Alex,
Acredito que não ficou claro para você(ou para mim) o entendimento de "fragmentação".
Por favor, leia e analise: "Se não existe uma ordenação determinada, então não existe uma fragmentação". Não há como fragmentar algo que não foi indicado para ser ordenado, ele sempre será desordenado.
O conceito "ForwardPointer" não define qual registro será apresentado antes de outro registro. Não existe um "critério definido" e com isso o I/O em disco é alto. Isto é apresentado no exemplo indicado no post do Peter.
Continuo sugerindo ao "Thenriquelima" para criar índices, de acordo com às possibilidade indicadas no post anterior.
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
-
Durval,
Entendo o seu ponto de vista, mas o conceito de "heap fragmentation" existe, e foi isso que quis dizer.
Segue outro post sobre o assunto:
http://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-2930-fixing-heap-fragmentation/
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
- Editado Alex Rosa [MSFT]Microsoft employee quarta-feira, 23 de julho de 2014 18:58
- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
-
Durval,
Entendo o seu ponto de vista, mas o conceito de "heap fragmentation" existe, e foi isso que quis dizer.
Segue outro post sobre o assunto:
http://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-2930-fixing-heap-fragmentation/
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
Alex,
Entendo que existe o termo "Heap fragmentation", mas como Deus (ops... desculpe) Paul disse: "Não tente organizar sua 'Heap Table' criando e dropando um índice, continue 'heap' " !!! Ou então crie definitivamente um índice cluster.
Isso é que importa. =^D
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
Todas as Respostas
-
Essa sua frase ficou um pouco confusa "O heap da fica fragmentado", mas estou entendendo que na sua analise os indices NON-CLUSTERED apareceram sem fragmentação e a HEAP apareceu fragmentada.
Se for isso, é possivel nesse caso ter a HEAP fragmentada, pois são estruturas diferentes.
Se você quiser remover a fragmentação da HEAP também, eu sugiro que você avalie a escolha de um indice CLUSTERED que melhor atender o seu caso, crie o indice e use-o (não remova).
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
- Editado Alex Rosa [MSFT]Microsoft employee segunda-feira, 14 de julho de 2014 15:45
-
Thenriquelima,
Uma tabela heap não possui uma ordenação definida, ela por si só define uma "ordenação" pela inclusão e manipulação de dados na tabela. Não é correto afirmar que uma tabela heap está fragmentada, porque ela não possui um critério de ordenação definido.
O ideal seria criar índices "clusterizados", definindo uma chave primária para cada tabela nesta situação. Caso não seja possível, crie ao menos um índice "não clusterizado" para otimizar suas principais consultas.
Para maiores informações sobre o assunto veja:
http://msdn.microsoft.com/en-us/library/ms190457.aspx
http://technet.microsoft.com/en-us/library/aa933131(v=sql.80).aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
-
Não é correto afirmar que uma tabela heap está fragmentada, porque ela não possui um critério de ordenação definido.
O conceito de fragmentação em Heaps existe e é chamado de "Forwarded Pointers".
Nesse link é possivel ler sobre isso:
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
- Editado Alex Rosa [MSFT]Microsoft employee quarta-feira, 23 de julho de 2014 18:28
-
Não é correto afirmar que uma tabela heap está fragmentada, porque ela não possui um critério de ordenação definido.
O conceito de fragmentação em Heaps existe e é chamado de "Forwarded Pointers".
Nesse link é possivel ler sobre isso:
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
Alex,
Acredito que não ficou claro para você(ou para mim) o entendimento de "fragmentação".
Por favor, leia e analise: "Se não existe uma ordenação determinada, então não existe uma fragmentação". Não há como fragmentar algo que não foi indicado para ser ordenado, ele sempre será desordenado.
O conceito "ForwardPointer" não define qual registro será apresentado antes de outro registro. Não existe um "critério definido" e com isso o I/O em disco é alto. Isto é apresentado no exemplo indicado no post do Peter.
Continuo sugerindo ao "Thenriquelima" para criar índices, de acordo com às possibilidade indicadas no post anterior.
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
-
Durval,
Entendo o seu ponto de vista, mas o conceito de "heap fragmentation" existe, e foi isso que quis dizer.
Segue outro post sobre o assunto:
http://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-2930-fixing-heap-fragmentation/
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
- Editado Alex Rosa [MSFT]Microsoft employee quarta-feira, 23 de julho de 2014 18:58
- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
-
Durval,
Entendo o seu ponto de vista, mas o conceito de "heap fragmentation" existe, e foi isso que quis dizer.
Segue outro post sobre o assunto:
http://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-2930-fixing-heap-fragmentation/
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
Alex,
Entendo que existe o termo "Heap fragmentation", mas como Deus (ops... desculpe) Paul disse: "Não tente organizar sua 'Heap Table' criando e dropando um índice, continue 'heap' " !!! Ou então crie definitivamente um índice cluster.
Isso é que importa. =^D
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta thenriquelima terça-feira, 5 de agosto de 2014 14:18
-
Sim, por isso no primeiro post eu comentei sobre deixar o indice.
"crie o indice e use-o (não remova)"
Acredito que esse post já ficou claro, obrigado pela discusão, é sempre saudavel ver pontos de vistas iguais ou diferentes sobre um assunto.
[]s
Alex Rosa - Premier Field Engineer - Data Platform
Disclaimer: This content is provided "as-is" and without warranties of any kind, either express or implied. You should therefore verify any information contained in the content before acting on it.
- Editado Alex Rosa [MSFT]Microsoft employee quarta-feira, 23 de julho de 2014 19:20
-