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 / 2626
Accepted
Michael Hedgpeth
Michael Hedgpeth
Asked: 2011-05-11 05:08:00 +0800 CST2011-05-11 05:08:00 +0800 CST 2011-05-11 05:08:00 +0800 CST

Quando índices não clusterizados devem ser armazenados em grupos de arquivos separados?

  • 772

Ouvi dizer que armazenar índices em um grupo de arquivos e unidade diferentes aumenta o desempenho em um banco de dados porque a unidade não precisa ir e voltar entre o índice e os dados aos quais o índice se refere. Também ouvi dizer que isso é um mito.

Quando é aconselhável armazenar índices não clusterizados em um grupo de arquivos e uma unidade separados? Que evidência de perfmon/profiler me levaria a chegar a essa conclusão? O hardware desempenha um papel na decisão (se um RAID/SAN é usado em uma única unidade)?

sql-server index
  • 5 5 respostas
  • 12274 Views

5 respostas

  • Voted
  1. Best Answer
    StanleyJohns
    2011-05-11T09:34:55+08:002011-05-11T09:34:55+08:00

    A parte mais lenta de um sistema de banco de dados são as unidades de disco. A eliminação de gargalos no nível do disco melhorará o desempenho. Quando os dados estão sendo pesquisados ​​e um índice é usado, o índice é primeiro pesquisado e, em seguida, os dados correspondentes são buscados. Se o índice e os dados estiverem nos mesmos discos, haverá alguma contenção acontecendo. Considerando que, se os dados estiverem em um disco (físico) diferente, haverá IO mais rápido acontecendo, aumentando assim o desempenho. A parte principal a observar é que os dados ou índice estão em discos físicos separados ou LUNs.

    Você usaria esse cenário se precisasse obter melhor desempenho de seu sistema, desde que tivesse os discos. Para seus contadores de perfmon, você pode usar Physical Disk – Avg. Disk sec/Read, Physical Disk – Avg. Disk sec/Write, Physical Disk – Disk Reads/sec, Physical Disk – Disk Writes/secpara ter uma comparação antes e depois de suas alterações.

    • 10
  2. Jack Douglas
    2011-05-11T05:20:57+08:002011-05-11T05:20:57+08:00

    Certamente é verdade que espalhar sua E/S simultânea entre diferentes unidades aumentará o desempenho - isso não é mito. É um mito que fazer isso duas vezes melhorará o desempenho novamente.

    Se você SAME , dividir sua matriz em duas partições e colocar índices em uma e tabelas em outra é uma perda de tempo.

    • 5
  3. Sankar Reddy
    2011-05-11T14:09:32+08:002011-05-11T14:09:32+08:00

    Separando índices de dados em grupos de arquivos separados = a melhoria de desempenho é altamente discutível. A melhoria de desempenho "pode" acontecer se você tiver o hardware subjacente para suportá-lo, mas apenas pelo fato de separá-los em grupos de arquivos diferentes não oferece aumento de desempenho. E também NÃO é fácil medir o aumento de desempenho por causa disso.

    Ref: http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA-Monkey.aspx

    Você deve fazer a pergunta primeiro. Por que você tem que fazer isso?

    1. Você está procurando melhorar o desempenho dos backups NÃO incluindo os índices?
    2. Você está procurando melhorar o desempenho de leituras e gravações nesses índices?
    3. Você está fazendo isso para uma melhor capacidade de gerenciamento de posicionamento dos objetos subjacentes?
    4. Você tem grandes volumes de dados com diferentes necessidades de desempenho?
    5. Você está procurando usar SSDs para índices não clusterizados para melhorar o desempenho etc...

    Eu olhei para esta tarefa para apoiar a necessidade de # 5 na lista acima e parece uma boa proposta para mim, embora ainda não tenhamos agido sobre isso.

    Observe que esta decisão NÃO é tão fácil de tomar e você precisa descobrir o que está tentando fazer e certificar-se de que possui o hardware para suportar. Não faça alterações como essa, a menos que você tenha testado bem e veja um aumento significativo no desempenho, caso contrário, você também pode abandonar essa ideia. NÃO vale a pena se você espera um aumento de desempenho simplesmente separando os índices em grupos de arquivos separados.

    • 5
  4. Marian
    2011-05-12T00:41:10+08:002011-05-12T00:41:10+08:00

    Vou contar minha experiência pessoal em relação a este item. Os índices não clusterizados devem ser armazenados em um grupo de arquivos separado quando a unidade de disco atual não for grande o suficiente para o espaço necessário :-). Você pode rir disso... mas acontece.

    Portanto, uma correção de emergência para nós, quando estávamos prestes a ficar sem espaço livre em uma unidade de dados, foi criar um bom script para recriar todos os índices não clusterizados online em um novo grupo de arquivos em uma unidade com espaço livre. Alguém poderia pensar que é fácil e rápido comprar um novo armazenamento... mas não é bem assim.

    Com relação ao desempenho, não vimos nada fora do comum após a mudança. Mas é uma grande caixa de armazenamento SAN onde tudo é mantido junto :-).

    • 1
  5. GP Van Eron
    2012-01-21T14:20:56+08:002012-01-21T14:20:56+08:00

    No geral; a divisão de dados e índices em discos separados com desempenho semelhante pode aumentar o desempenho para operações de gravação substanciais nessa tabela ou grandes operações de leitura que utilizam esse índice. Uma metodologia semelhante a algumas outras operações de E/S, como uma tabela particionada espalhada por vários discos físicos.

    No entanto, também depende muito do armazenamento . Por exemplo; se você tiver um servidor com um bom Fushion ioDrive (ou algo semelhante) e também tiver discos giratórios individuais. Pode ser mais benéfico manter tudo no ioDrive (a menos que o espaço seja limitado). Há também outras coisas a serem consideradas - configuração de RAID, configuração de armazenamento de rede.

    Faça algumas comparações em um servidor de teste com hardware semelhante ou (somente se um servidor secundário não for uma opção) durante os horários de pico com dados temporários. O link DBA-Monkey de Sankar acima é um bom alimento para reflexão.

    • 1

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

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

  • O que significa "índice" em RDBMSs? [fechado]

  • Como criar um índice condicional no MySQL?

Sidebar

Stats

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

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

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 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

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 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
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +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
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +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
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +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