• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

edsudani

SQL Server

9 mensagens neste tópico

Boa noite a todos!

Sou técnico em Eletrônica a 35 anos e recentemente formado em informática, portanto tenho muito a aprender. Sou autodidata e escolhi para meu desenvolvimento técnico estudar SQL Server 2005.

Estou estudando "Conceito e Criação de Índices" no capítulo 4. O autor do livro SQL SERVER 2005 CURSO COMPLETO afirma que FILL FACTOR "define um porcentual a ser deixado em branco,sem registros gravados, em cada página de dados". Seu objetivo "é agilizar as operações de inserção, alteração e inclusão de dados, evitando movimentações de registros entre páginas e, em casos extremos, desdobramentos de páginas."

Com base nessa informação, concuí que o Fill Factor define o espaço em branco ou sem registro na página de dados. Logo, um Fill Factor de 100% significa ZERO BYTE Gravado.

Mais adiante o autor afirma Que um Fill Factor de 100% permite a ocupação total das páginas. Isto significa que as páginas estarão totalmente gravadas (ocupadas)-- sem espaço em branco.

Isto parece contraditório e portanto muito confuso.

Poderíam por gentileza ajudr-me a compreender este assunto, (Fill Factor), pois o autor reconhece que é uma "opção pouco utilizada pelo não conhecimento da aplicabilidade desta opção." ?

Se minhas expressões causarem embaraços, perdoem-me, pois meus português é o do Brasil.

Sem mais: José Edison Sudani

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Fill Factor define o tamanho do espaço que fica reservado mas que é deixado livre, isto é, sem informação gravada.

O objectivo é manter a informação num único ficheiro, o mais próxima possível ao nível das páginas no disco rígido, para que o acesso a essa informação se faça o mais depressa possível.

Esse espaço reservado mas livre é usado para futuras expansões da base de dados.

Quando há actualização de informação, esse espaço e/pode ser usado para guardar essa actualização junto com a informação, mantendo assim a informação o mais próxima possível.

Sem essa funcionalidade, o que acontece é que a informação vai ficar fragmentada pelo disco rígido e o seu acesso vai ser mais lento dado que é necessário ler os vários bocados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito bem M6. O autor fala de "movimentações de registros entre páginas e, em casos mais extremos, desdobramentos de páginas." Como você explicou, haverá fragmentação de dados.

O que causa confusão é a seguinte afirmação do autor: "O valor do parâmetro fill factor é um valor percentual, o qual varia de 0 a 100%. Um valor de 100% significa que as páginas de dados serão ocupadas completamente, o que implica menor espaço para armazenamento e também menos operações de I/O de disco para as consultas..."

Observe o texto sublinhado.

Esta afirmação parece contrária à principal vantagem de estabelecer um Fill Factor ou seja, reservar um espaço em branco para atualizações.

É correto que o valor default (padrão) do Fill Factor no SQL Server2005 é=0% e ainda assim reserva espaço em branco para otimizações do índice?

Como eu poderia determinar um valor ótimo para o Fill Factor?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Passo a explicar:

O valor de 100 quer mesmo dizer que as páginas serão totalmente usadas. Este valor deverá ser usado apenas quando não há/haverá alterações aos dados, por exemplo em tabelas cuja informação será acedida apenas para leitura.

Um valor mais baixo, isto é < 100, deixa algum espaço vazio nas páginas, o que reduz a necessidade de divisão das páginas conforme os índices crescem, mas tal requer mais espaço para armazenamento. Estes valores devem ser usados quando existem tabelas onde existe  alteração de dados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok M6,

Quais são os parâmetros para determinar um Fill Factor adequado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim. Nessa situação a fragamentação vai ocorrer.

Quanto a encontrar o valor certo, bem isso é quase uma arte, dado que não há uma formula "mágica" para definir o fill factor.

O fill factor implica um trade-off de performance entre leitura e escrita, de forma simples: fill factor elevado = leituras rápidas, fill factor baixo = escritas rápidas.

É muito comum usarem-se factores de 70% (muitas escritas) até 95% (muitas leituras).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito bem. Se eu definir um valor de 50%, teria uma condição ótima para leitura e escrita?

Excetuando-se uma tabela só para leitura (o que imagino difícil), o valor acima poderia ser generalizado para qualquer tabela (apenas por motivos práticos)? Ou devo evitar este proceder?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

M6, considere sanada minha dúvida com respeito ao Fill Factor.

Agradeço a sua prestimosa colaboração.

Digo-lhe que o autor  limitou-se a afirmar (por

eMail )que o texto do livro estava correto, nada mais.

Se houver mais dúvidas, gostaria de postá-las aqui. Se possível.

José Edison Sudani

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

José, todas as dúvidas são bem vindas é esse o propósito deste fórum. :thumbsup:

Há por aqui muita gente que "sabe umas coisas" e pode ajudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora