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 / 175039
Accepted
Peter
Peter
Asked: 2017-06-01 06:32:52 +0800 CST2017-06-01 06:32:52 +0800 CST 2017-06-01 06:32:52 +0800 CST

Diagnosticando commits Always On lentos

  • 772

Grupo de disponibilidade Always On de dois nós, uma réplica síncrona.

Minha réplica síncrona fica fora de sincronia com muita regularidade. Vejo um padrão em que, quando ocorre um backup de log na réplica secundária, ocorrerá um curto período de atraso durante o qual o redo_queue_size é preenchido rapidamente, assim:

insira a descrição da imagem aqui

[1]: https://i.sta

Observando a orientação no link a seguir, parece que meu problema se deve principalmente à contenção que o thread de redo experimenta ao tentar proteger as transações:

https://technet.microsoft.com/en-us/library/dn135335(v=sql.110).aspx

A réplica fica ainda mais fora de sincronia quando um backup de log de transações é executado e esse problema é agravado pelos relatórios executados na réplica secundária também.

O tempo todo, meus backups de log de transações são enormes - em média 1,2 GB, mas podem ser maiores.

Até onde sei, meus backups de log serão grandes porque tenho o TDE habilitado no banco de dados, mas realmente não esperava que fossem tão grandes. Suspeito que isso seja o que mais contribui para as confirmações lentas na réplica secundária.

Existem contadores de desempenho recomendados para diagnosticar confirmações lentas em uma réplica síncrona? O que mais posso fazer para validar minha teoria?

Meu problema parece ser o mesmo descrito aqui: https://www.sqlservercentral.com/Forums/1871286/AlwaysOn-Missing-Redo-Thread

Posso apenas habilitar esse sinalizador de rastreamento na réplica secundária ou ele precisa ser aplicado a ambos os nós?

EDIT: verifiquei a fila de refazer às 6 da manhã e encontrei um número enorme, com um tempo de recuperação de 15 a 20 minutos e aumentando um pouco o tempo todo. Em seguida, apliquei o traceflag DBCC TRACEON (3459, -1)e descobri que, após alguns minutos, o número de comandos de refazer caiu extremamente rapidamente. Até agora, o problema parece ter sido mitigado por esse sinalizador de rastreamento, mas presumivelmente isso colocará todas as transações protegidas no log da réplica secundária no modo de thread único, como o SQL Server 2014 e, portanto, ainda há potencial para a réplica secundária ficar para trás como resultado do encadeamento não paralelo, quando o primário está sob carga de gravação pesada.

performance availability-groups
  • 1 1 respostas
  • 6690 Views

1 respostas

  • Voted
  1. Best Answer
    Peter
    2017-07-26T02:57:54+08:002017-07-26T02:57:54+08:00

    Os problemas que eu estava enfrentando:

    1. Réplica secundária síncrona ficando para trás semipermanentemente
    2. Grandes backups de log

    Isso foi resolvido habilitando o sinalizador de rastreamento 3459. No meu caso foi extremamente fácil ver que o sinalizador corrigiu imediatamente o tipo de espera parallel_redo_flow_control dirty_page_table_lock parallel_drain_redo_workere mostrou uma rápida diminuição no tamanho da fila de redo.

    Eu me pergunto por que, no relatório de bug, a Microsoft chama isso de "asserção": https://support.microsoft.com/en-us/help/3200975/fix-assertion-occurs-when-you-use-parallel-redo- em uma réplica secundária

    Crédito para Jason AKA CirqueDeSQLeil de SQLServerCentral.com https://www.sqlservercentral.com/Forums/1871286/AlwaysOn-Missing-Redo-Thread

    • 3

relate perguntas

  • Existe um ganho de desempenho ao manipular dados com procedimentos armazenados em vez de alimentá-los em funções após a recuperação?

  • Como você ajusta o MySQL para uma carga de trabalho pesada do InnoDB?

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

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

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