AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 23724
Accepted
dev_etter
dev_etter
Asked: 2012-09-06 07:07:36 +0800 CST2012-09-06 07:07:36 +0800 CST 2012-09-06 07:07:36 +0800 CST

Existe algum benefício em desfragmentar índices SQL em um ambiente SAN?

  • 772

Nosso servidor SQL reside em uma SAN. Ele contém dezenas de bancos de dados OLTP, alguns com várias tabelas contendo mais de 1 milhão de registros.

Temos executado os scripts de manutenção de índice de Ola Hallengren semanalmente, e eles são executados por várias horas a cada vez. Com base no limite de fragmentação, o script reorganizará ou reindexará um índice. Observamos que durante a reindexação, os arquivos de log ficam enormes, o que leva a um consumo excessivo de largura de banda durante o envio de log.

Em seguida, vem um artigo de Brent Ozar no qual ele diz para parar de se preocupar com índices SQL :

Seus discos rígidos são compartilhados com outros servidores que também estão fazendo solicitações de unidade ao mesmo tempo, portanto, as unidades sempre estarão pulando por todo o lugar para obter dados. Desfragmentar seus índices é apenas um trabalho ocupado sem sentido.

Pesquisar essa questão no Google leva a opiniões variadas, a maioria apoiada em argumentos que parecem muito breves ou fracos. Nosso plano provisório é ajustar o limite de fragmentação em nosso script de manutenção para que ele se reorganize com muito mais frequência do que reindexe.

Qual é o veredicto final? Vale a pena desfragmentar índices SQL em uma SAN considerando os encargos associados à execução de trabalhos de manutenção semanais?

sql-server sql-server-2008-r2
  • 3 3 respostas
  • 4670 Views

3 respostas

  • Voted
  1. Best Answer
    Jon Seigel
    2012-09-06T09:07:15+08:002012-09-06T09:07:15+08:00

    As estratégias de desfragmentação ajudam a melhorar a velocidade de varredura de/para o disco .

    A grande variedade de opiniões ocorre porque a estratégia de desfragmentação ideal de um ambiente depende de muitos fatores diferentes. Existem também várias camadas potenciais de fragmentação em jogo.

    Dizer que seus bancos de dados são armazenados em uma SAN não é informação suficiente. Por exemplo:

    • Os arquivos de banco de dados são armazenados em grupos de RAID físicos separados ou no mesmo grupo de RAID? Que outros processos estão ativos no mesmo dispositivo? Seus arquivos de backup estão acabando lá também? Você pode ter que pedir essas informações ao seu administrador de SAN, porque nem sempre é transparente.

    • Quais são os padrões de acesso aos bancos de dados? O OLTP geralmente é acesso aleatório, mas às vezes um aplicativo é compatível com a verificação de tabela e você não pode alterar seu comportamento (aplicativo ISV). Os aplicativos são principalmente de leitura, principalmente de gravação ou algo intermediário?

    • Há SLAs de desempenho em execução durante um período de recuperação/failover ?

    A postagem de Brent assume que há um pool gigante de armazenamento e tudo o compartilha. Isso significa que os discos físicos raramente estão ociosos e, portanto, a maioria dos acessos é aleatório. Se essa for a sua situação, o conselho se aplica e concordo com ele em sua maior parte. Embora esse tipo de estratégia seja muito mais fácil de gerenciar, não é necessariamente (a) o que você tem em seu ambiente ou (b) qual é a melhor solução para seu ambiente.

    Se a manutenção do índice for onerosa, considere fazê-la de forma menos agressiva e/ou amortize o custo ao longo da semana (ou seja, execute uma manutenção leve uma vez/dia, em vez de uma manutenção pesada uma vez/semana).

    Você também pode ativar a SortInTempdbopção para reduzir potencialmente a quantidade de registro que ocorre nos bancos de dados do usuário.

    • 10
  2. Jimbo
    2012-09-06T08:33:13+08:002012-09-06T08:33:13+08:00

    Idealmente, você deve reorganizar/reindexar APENAS os índices que precisam de atenção, caso contrário, estará desperdiçando recursos e possivelmente causando outros problemas.

    Você precisa estabelecer uma linha de base de desempenho e, sempre que fizer alterações, comparar a mudança de desempenho com a linha de base para determinar se vale a pena implementar sua mudança.

    • 2
  3. IryDBA2791
    2013-03-02T09:21:13+08:002013-03-02T09:21:13+08:00

    Ok, a pergunta é sobre índices de banco de dados, que são uma construção de um arquivo ou conjunto de arquivos. A leitura das respostas acima levaria uma pessoa a acreditar que estamos falando de fragmentação no nível do disco e não dos índices dentro de um arquivo. Esses assuntos totalmente separados.

    A abordagem míope aqui é o desempenho ao recuperar dados dentro e o banco de dados OLTP melhora se os índices forem desfragmentados ou reconstruídos. A resposta é sim! No entanto, é importante observar que a fragmentação do disco também é um fator.

    Menor "custo" geral? Faça sua manutenção de banco de dados. Segundo menor custo, desconecte o banco de dados, mova-o para outro lugar, reformate seus discos e siga as práticas recomendadas para alinhamento de partição de disco http://msdn.microsoft.com/en-us/library/dd758814.aspx . Por último, mas não menos importante, use um desfragmentador avançado de terceiros como o Diskkeeper.

    Lembre-se de que isso é recomendado APENAS para armazenamento do tipo NTFS (por exemplo, sistema operacional Windows) e não é um endosso para nenhum produto nem sou afiliado à Condusiv Technologies ou suas subsidiárias.

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve