none
Criação de aquivos secundários RRS feed

  • Pergunta

  • Bom dia pessoal!

    Meu ERP possui um banco com um arquivo mdf com 29GB e um ldf com 83GB em um servidor DELL com 4 discos de 300GB em RAID 10 com Windows Server 2008 e SQL Server 2008 R2.

    Gostaria de melhorar o desempenho do banco criando arquivos secundários pois possuímos rotinas de contabilidade por exemplo que ficam horas rodando em dia de fechamento sobrecarregando o banco.

    É possível criar outros arquivos secundários sem comprometer o mdf atual?

    sexta-feira, 4 de maio de 2012 14:37

Respostas

  • Boa Tarde,

    Existem várias coisas que podem ser feitas pela performance de um banco de dados, mas várias dessas coisas também podem não fazer qualquer diferença. Se olharmos alguém com um corte no braço e dermos uma aspirina ou ainda alguém com uma gripe e dermos uma pomada de calêndula ou uma arnica, provavelmente não irá fazer a menor diferença. Claro que tanto a aspirina, a calêndula e a arnica tem o seu valor e seu poder de cura, mas não adianta usar um remédio bom para o problema errado e seu diagnóstico não permite concluir que a quantidade de arquivos é o problema (e por isso acredito que a opinião do Renato está correta). Se a simples adição de arquivos melhorasse o desempenho em qualquer situação, os bancos já viriam com vários arquivos By Default.

    Analisando o seu ambiente, há traços que já sugerem uma falta de administração mais efetiva. Se a base tem 29GB de dados e 83GB de log, há chances enormes de que o log está configurado incorretamente, pois, não é comum que exista um log de transações quase três vezes maior que o LDF.

    Mas independente disso, eu sugiro fazer o diagnóstico correto para dar o remédio certo e o livro abaixo pode ajudá-lo:

    Troubleshooting Performance Problems in SQL Server 2008
    http://msdn.microsoft.com/en-us/library/dd672789(v=sql.100).aspx

    Consumir várias horas pode ser resultado de um arquitetura de aplicação inadequada (típica de programas que trazem tudo e processam no client), consulta mal formuladas, ausência de indexação, etc. É importante fazer o diagnóstico certo para resolver o problema com o remédio certo. Senão você gastará tempo no lugar errado.

    Dividir as tabelas entre arquivos não é algo complicado. Após adicionar o novo arquivo, basta efetuar um REBUILD que os dados serão divididos entre os arquivos do FILEGROUP onde a tabela está localizada.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    quinta-feira, 10 de maio de 2012 19:48
  • Boa noite Saulo,

    a criação de vários arquivos secundários não melhoram em nada o desempenho, se não houver um planejamento na implementação do ambiente, como dimensionamento de hardware, crescimento dos databases.

    Por exemplo, para ter desempenho em arquivos secundários, você precisa criar os mesmos em discos físicos diferentes, colocar o TempDB em outro disco. E isso só para começar.

    Espero ter ajudado.


    Angelo Máximo
    MCSA Windows 2003|MCTS SQL Server 2008
    angmms@gmail.com
    http://angmaximo.wordpress.com/

    segunda-feira, 14 de maio de 2012 23:31

Todas as Respostas

  • A principio criar um novo datafile nao vai melhorar sua performance. 

    http://www.diaadiasql.com.br

    sexta-feira, 4 de maio de 2012 19:56
  • Saulo,

    Possível criar é sim, mas você terá todo um trabalho de migrar as tabelas ou índices para este arquivo de dados secundário.

    Dividir um banco de dados em diversos filegroups com certeza ajuda em muito na flexibilidade dos dados, objetos, performance e também possíveis manutenções.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 7 de maio de 2012 14:50
    Moderador
  • Bom dia Júnior!

    Quer dizer que se eu tiver uma rotina da Contabilidade no meu ERP que consome várias horas de execução, eu teria que migrar todas as tabelas utilizadas por esta rotina para estes arquivos correto? É muito complicado fazer isso? Gostaria de realizar um teste na minha base de testes.

    Obrigado!

    quinta-feira, 10 de maio de 2012 12:43
  • Boa Tarde,

    Existem várias coisas que podem ser feitas pela performance de um banco de dados, mas várias dessas coisas também podem não fazer qualquer diferença. Se olharmos alguém com um corte no braço e dermos uma aspirina ou ainda alguém com uma gripe e dermos uma pomada de calêndula ou uma arnica, provavelmente não irá fazer a menor diferença. Claro que tanto a aspirina, a calêndula e a arnica tem o seu valor e seu poder de cura, mas não adianta usar um remédio bom para o problema errado e seu diagnóstico não permite concluir que a quantidade de arquivos é o problema (e por isso acredito que a opinião do Renato está correta). Se a simples adição de arquivos melhorasse o desempenho em qualquer situação, os bancos já viriam com vários arquivos By Default.

    Analisando o seu ambiente, há traços que já sugerem uma falta de administração mais efetiva. Se a base tem 29GB de dados e 83GB de log, há chances enormes de que o log está configurado incorretamente, pois, não é comum que exista um log de transações quase três vezes maior que o LDF.

    Mas independente disso, eu sugiro fazer o diagnóstico correto para dar o remédio certo e o livro abaixo pode ajudá-lo:

    Troubleshooting Performance Problems in SQL Server 2008
    http://msdn.microsoft.com/en-us/library/dd672789(v=sql.100).aspx

    Consumir várias horas pode ser resultado de um arquitetura de aplicação inadequada (típica de programas que trazem tudo e processam no client), consulta mal formuladas, ausência de indexação, etc. É importante fazer o diagnóstico certo para resolver o problema com o remédio certo. Senão você gastará tempo no lugar errado.

    Dividir as tabelas entre arquivos não é algo complicado. Após adicionar o novo arquivo, basta efetuar um REBUILD que os dados serão divididos entre os arquivos do FILEGROUP onde a tabela está localizada.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    quinta-feira, 10 de maio de 2012 19:48
  • Boa noite Saulo,

    a criação de vários arquivos secundários não melhoram em nada o desempenho, se não houver um planejamento na implementação do ambiente, como dimensionamento de hardware, crescimento dos databases.

    Por exemplo, para ter desempenho em arquivos secundários, você precisa criar os mesmos em discos físicos diferentes, colocar o TempDB em outro disco. E isso só para começar.

    Espero ter ajudado.


    Angelo Máximo
    MCSA Windows 2003|MCTS SQL Server 2008
    angmms@gmail.com
    http://angmaximo.wordpress.com/

    segunda-feira, 14 de maio de 2012 23:31
  • Boa tarde Gustavo!

    Concordo plenamente com você. Pensei primeiro na criação de arquivos mas sabia que teria outros pontos a verificar. Vou estudar o livro que você me indicou e vou ver o que posso fazer pra melhorar.

    O banco foi configurado na época da implantação do ERP e com certeza não fizeram um planejamento adequado. Estamos migrando do SQL Server 2005 para 2008 assim como do Server 2003 para 2008. Por este motivo, queria mudar esta configuração do banco ou melhor, melhorar a performance. Com relação ao log, esta era uma outra pergunta que gostaria de fazer. Ele está crescendo muito e estava pensando em diminuir executando o shrink file. Pelo que sei, isto não é o recomendado. O que você me sugere para fazer com o log?

    Obrigado!

    quarta-feira, 16 de maio de 2012 17:47
  • Boa tarde Angelo!

    Como disse para o Gustavo, o banco foi implementado no início da implantação do nosso ERP Logix da Totvs e eu não participei. Como estamos migrando nossos softwares para dois servidores DELL com 4 discos de 300GB em RAID 10 em cada servidor, gostaria de aproveitar a oportunidade para melhorar o desempenho. A ideia é que os arquivos secundários seriam divididos nestes discos mesmo.

    Obrigado!

    quarta-feira, 16 de maio de 2012 17:52
  • Saulo,

    Concordo com as observações dos Colegas, falo isso por experiência própria, pois estou a 6 meses em uma nova empresa e tenho muito trabalho justamente para colocar este papel de administração em prática.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 16 de maio de 2012 18:07
    Moderador