edsudani Posted October 17, 2009 at 10:48 PM Report Share #292126 Posted October 17, 2009 at 10:48 PM 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 More sharing options...
M6 Posted October 19, 2009 at 09:51 AM Report Share #292296 Posted October 19, 2009 at 09:51 AM 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 More sharing options...
edsudani Posted October 24, 2009 at 07:28 PM Author Report Share #293209 Posted October 24, 2009 at 07:28 PM 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 More sharing options...
M6 Posted October 25, 2009 at 06:45 PM Report Share #293316 Posted October 25, 2009 at 06:45 PM 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 More sharing options...
edsudani Posted October 26, 2009 at 11:15 PM Author Report Share #293488 Posted October 26, 2009 at 11:15 PM Ok M6, Quais são os parâmetros para determinar um Fill Factor adequado? Link to comment Share on other sites More sharing options...
M6 Posted October 26, 2009 at 11:27 PM Report Share #293490 Posted October 26, 2009 at 11:27 PM 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 More sharing options...
edsudani Posted October 26, 2009 at 11:38 PM Author Report Share #293494 Posted October 26, 2009 at 11:38 PM 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? Link to comment Share on other sites More sharing options...
edsudani Posted October 27, 2009 at 12:00 AM Author Report Share #293497 Posted October 27, 2009 at 12:00 AM 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 Link to comment Share on other sites More sharing options...
M6 Posted October 28, 2009 at 09:31 AM Report Share #293670 Posted October 28, 2009 at 09:31 AM José, todas as dúvidas são bem vindas é esse o propósito deste fórum. 👍 Há por aqui muita gente que "sabe umas coisas" e pode ajudar. 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now