Jump to content

SQL Server


edsudani
 Share

Recommended Posts

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

Link to comment
Share on other 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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other 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?

Link to comment
Share on other 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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other 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).

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.