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 / 108704
Accepted
Gabe
Gabe
Asked: 2015-08-01 10:31:39 +0800 CST2015-08-01 10:31:39 +0800 CST 2015-08-01 10:31:39 +0800 CST

Quando usar sort_in_tempdb ao reconstruir índices?

  • 772

Estamos debatendo se devemos usar a opção SORT_IN_TEMPDB para nossas tabelas DW. Meu entendimento é que há mais gravações ao usar essa opção, embora sejam mais sequenciais. Temos uma SAN (que tem sido notoriamente lenta às vezes), portanto, em nosso caso, queremos limitar o número de gravações o máximo possível. Acredito que o tempdb esteja em um LUN separado (conjunto de discos).

Temos bastante espaço em disco em nosso arquivo de dados e em nosso arquivo tempdb. Nesse caso, nos beneficiaríamos do uso de SORT_IN_TEMPDB?

Uma coisa que me impressionou foi este comentário sobre esta resposta

Ao reconstruir um índice, você precisaria do dobro do espaço do índice + 20% para a classificação. Portanto, em geral, para reconstruir todos os índices em seu banco de dados, você precisa apenas de 120% do seu maior índice em seu banco de dados. Se você usar SORT_IN_TEMPDB, você ganha apenas 20%, ainda precisa de 100% adicionais em seu arquivo de dados. Além disso, usar sort em tempdb aumenta drasticamente sua carga de E/S, pois em vez de gravar o índice uma vez no arquivo de dados, agora você o grava uma vez no tempdb e depois o grava no arquivo de dados. Então isso nem sempre é o ideal.

Definitivamente, não queremos aumentar nossa carga de E/S com nossa SAN lenta/possivelmente mal configurada.

Qual seria a melhor maneira de testar isso? Simplesmente reconstruindo a tabela com e sem a opção e logando os tempos?

Edit : Temos 8 arquivos tempdb, cada um com 15 GB. Temos os sinalizadores TF 1117/1118 definidos e o IFI está ativado. Atualmente fazemos uma mistura de reconstrução com a opção sort_in_tempdb e sem ela.

Obrigado!

SQL Server 2012 Corporativo

sql-server sql-server-2012
  • 1 1 respostas
  • 30897 Views

1 respostas

  • Voted
  1. Best Answer
    Kin Shah
    2015-08-01T11:28:22+08:002015-08-01T11:28:22+08:00

    SORT_IN_TEMPDBsignifica que o SQL Server usará tempdbpara alocar o espaço temporário em vez de alocar espaço no banco de dados do usuário cujo índice está sendo recompilado. Isso significa que você precisará de menos espaço livre no banco de dados do usuário durante uma operação de reconstrução de índice e mais espaço livre no tempdb.

    Ele oferece uma vantagem melhor quando o tempdb está em um conjunto diferente de discos (LUNs) do banco de dados do usuário.

    Da opção SORT_IN_TEMPDB - BOL :

    Se a opção SORT_IN_TEMPDB estiver definida como ON e tempdb estiver em um conjunto separado de discos do grupo de arquivos de destino, durante a primeira fase, as leituras das páginas de dados ocorrerão em um disco diferente das gravações na área de trabalho de classificação em tempdb. Isso significa que as leituras de disco das chaves de dados geralmente continuam mais serialmente no disco e as gravações no disco tempdb também são geralmente seriais, assim como as gravações para criar o índice final. Mesmo que outros usuários estejam usando o banco de dados e acessando endereços de disco separados, o padrão geral de leituras e gravações é mais eficiente quando SORT_IN_TEMPDB é especificado do que quando não é.

    Certifique-se de ler os requisitos de espaço em disco quando SORT_IN_TEMPDB estiver ON .

    SAN lenta/possivelmente mal configurada

    Você conhece o ponto de dor. Por que você não trabalha com o administrador da SAN para corrigi-lo? SAN mal configurado e ou lento causará todos os tipos de problemas como lentidão .

    Alguns pontos importantes a serem observados:

    • Use MAXDOP=1 ao fazer uma reconstrução de índice online - caso contrário, causará maior fragmentação.
    • Reorganize/reconstrua seus índices de forma inteligente com base no nível de fragmentação, bem como nos fragmentos de página.
    • Leia a experiência do SQLFool com a criação de um índice de 60 GB
    • Certifique-se de ter configurado o tempdb corretamente - TF 1117 (CRESCER TODOS OS ARQUIVOS EM UM GRUPO DE ARQUIVOS IGUALMENTE) e 1118 (SOMENTE EXTENSÕES COMPLETAS) e ter mais arquivos de dados tempdb .

    Qual seria a melhor maneira de testar isso?

    Sim, você precisa testá-lo analisando as estatísticas de espera ao reconstruir o índice com e sem SORT_IN_TEMPDB. Meça o tempo de execução também e, ao fazer no PROD, certifique-se de fazê-lo durante uma janela de manutenção ou menos atividade do servidor. Verifique também seus dados de leitura/gravação e latência de log .

    Não tenho certeza se você tem inicialização de arquivo instantânea , mas será beneficiado ao restaurar, durante o crescimento automático de arquivos de dados e ao criar um novo banco de dados (apenas mencionando para completar).

    • 28

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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

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

    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
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • 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
    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

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