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 / 139638
Accepted
tesla747
tesla747
Asked: 2016-05-27 08:22:14 +0800 CST2016-05-27 08:22:14 +0800 CST 2016-05-27 08:22:14 +0800 CST

Agendamento de tarefas de reconstrução de índice

  • 772

Eu tenho um MS-SQL 2014 SP1 - dois nós AlwaysOn AG (um primário e um secundário somente leitura) com cerca de 10 bancos de dados com tamanho de 20 a 30 GB no total. Tenho algumas dúvidas sobre o agendamento da reconstrução do índice e coleta de estatísticas.

Planejei agendá-lo semanalmente por meio de planos de manutenção. Normalmente nas noites de domingo, onde não haverá carga alguma no primário.

Devo executar o trabalho no primário ou na réplica? Se eu executá-lo apenas no secundário, quais benefícios obtenho? ou vice-versa? (O que significa que devo executar em ambos os nós)

É provável que ocorra corrupção se eu usar o SP1 e reconstruir o índice por meio de planos de manutenção? Como mencionado aqui

sql-server sql-server-2014
  • 2 2 respostas
  • 3099 Views

2 respostas

  • Voted
  1. Best Answer
    Kin Shah
    2016-05-27T08:49:22+08:002016-05-27T08:49:22+08:00

    Você deve usar scripts de manutenção de índice inteligentes em oposição à tarefa de manutenção .

    Devo executar o trabalho no primário ou na réplica?

    Sim, pois são replicados em réplicas secundárias.

    Se eu executá-lo apenas no secundário, quais benefícios obtenho?

    você não pode executar na réplica secundária.

    A manutenção do índice gera muita atividade de log de transações que afeta seu RTO e RPO. Além disso, aumenta o backlog de redo em réplicas secundárias.

    Você deve seguir as recomendações para manutenção de índice com grupos de disponibilidade AlwaysOn :

    • Encontre um momento tranquilo ou durante o tempo de manutenção planejado, execute sua manutenção de índice.
    • Se possível, mude do modo síncrono para o modo assíncrono. Depois que a manutenção do índice for concluída, volte para o que era.
    • Faça backups de log frequentes para que o arquivo de log não fique fora de controle.
    • Como você está no sql server 2014, você deve usar WAIT_AT_LOW_PRIORITY, MAX_DURATIONeABORT_AFTER_WAIT
    • Se você estiver usando reconstruções de índice online, use MAXDOP = 1

    Além disso, observe que uma tabela particionada pode limitar o tempo de execução MAX DOP de criar/alterar índice

    É provável que ocorra corrupção se eu usar o SP1 e reconstruir o índice por meio de planos de manutenção?

    Como você está no SP1 ( 12.0.2370 or greater) , você deve ficar bem.

    • 10
  2. Kishor Kumar
    2017-10-24T03:20:53+08:002017-10-24T03:20:53+08:00

    Acho que existe outra maneira de reconstruir o índice fragmentado. Você pode criar um sp e agendá-lo via SQL Server Agent ou via agendador de tarefas. A consulta abaixo reconstrói ou reorganiza apenas os índices necessários em vez de toda a reconstrução do índice. Como recomendação geral, o índice precisa reconstruir que obtenha uma porcentagem de fragmento superior a 30% e reorganize o índice que possui porcentagem de fragmento entre 10% e 30%

    Saiba mais detalhes Click Hare

    O índice de reconstrução do script abaixo um por um, portanto, não será uma operação expansiva no banco de dados de produção.

    --- Reconstruir/Reorganizar Índice
    CRIAR TABELA #fragment_tbl
    (
     DatabaseName SYSNAME
     , SchemaName SYSNAME
     , TableName SYSNAME
     , IndexName SYSNAME
     , [Fragmentação%] FLOAT
    )
    INSERIR EM #fragment_tbl
    SELECIONE
     DB_NAME(DB_ID()) AS DatabaseName
     , ss.name AS SchemaName
     , OBJECT_NAME (s.object_id) AS TableName
     , i.name AS IndexName
     , s.avg_fragmentation_in_percent AS [Fragmentation%]
    FROM sys.dm_db_index_physical_stats(db_id(),NULL, NULL, NULL, 'SAMPLED') s
    INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
    E s.index_id = i.index_id
    INNER JOIN sys.objects o ON s.object_id = o.object_id
    INNER JOIN sys.schemas ss ON ss.[schema_id] = o.[schema_id]
    WHERE s.database_id = DB_ID()
    E i.index_id != 0
    E s.record_count > 0
    E o.is_ms_shipped = 0
    DECLARE @RebuildSQL NVARCHAR(MAX)
    SET @RebuildSQL = ''
    SELECIONE
     @RebuildSQL = @RebuildSQL +
    CASO
     QUANDO [% de fragmentação] > 30
       THEN CHAR(10) + 'ALTER INDEX ' + QUOTENAME(IndexName) + ' ON '
          + QUOTENAME(SchemaName) + '.'
          + QUOTENAME(TableName) + ' REBUILD;'
     QUANDO [% de fragmentação] > 10
        THEN CHAR(10) + 'ALTER INDEX ' + QUOTENAME(IndexName) + ' ON '
        + QUOTENAME(SchemaName) + '.'
        + QUOTENAME(NomeTabela) + ' REORGANIZAR;'
    FIM
    DE #fragment_tbl
    ONDE [Fragmentação%] > 10
    DECLARE @StartOffset INT
    DECLARE @Comprimento INT
    SET @StartOffset = 0
    DEFINIR @Comprimento = 4000
    ENQUANTO (@StartOffset
    • 1

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