La lunghezza dell'elenco della cronologia di InnoDB è aumentata in modo significativo - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

La lunghezza dell'elenco della cronologia di InnoDB è aumentata in modo significativo

A partire da date allora, l'elenco della cronologia delle modifiche alle righe è aumentato in modo significativo, fino a un length certo puntodb-instance. Questo aumento influisce sulle prestazioni di chiusura delle query e arresto del database.

Versioni del motore supportate

Queste informazioni approfondite sono supportate per tutte le versioni di Aurora MySQL.

Context

Il sistema di transazioni InnoDB gestisce il controllo della concorrenza multiversione (MVCC). Quando una riga viene modificata, la versione precedente alla modifica dei dati da modificare viene archiviata come record di annullamento in un log di annullamenti. Ogni record di annullamento ha un riferimento al record di ripristino precedente, formando un elenco collegato.

L'elenco della cronologia di InnoDB è un elenco globale dei log di annullamento per le transazioni sottoposte a commit. MySQL utilizza l'elenco della cronologia per eliminare i record e le pagine di log quando le transazioni non richiedono più la cronologia. La lunghezza dell'elenco della cronologia è il numero totale di log di annullamento che contengono modifiche nell'elenco della cronologia. Ogni log contiene una o più modifiche. Se la lunghezza dell'elenco della cronologia di InnoDB aumenta in modo significativo, indicando un numero elevato di precedenti versioni di riga, la chiusura delle query e l'arresto del database diventano più lenti.

Probabili cause di questo problema

Le cause tipiche di un lungo elenco della cronologia sono:

  • Transazioni di lunga durata, in lettura o scrittura

  • Carico elevato in scrittura

Azioni

Consigliamo azioni diverse a seconda delle cause degli approfondimenti.

Non iniziare alcuna operazione che comporti l'arresto del database finché non diminuiscono le dimensioni dell'elenco della cronologia di InnoDB

Poiché un lungo elenco della cronologia di InnoDB rallenta l'arresto del database, riduci le dimensioni dell'elenco prima di iniziare le relative operazioni. Queste operazioni includono gli aggiornamenti della versione principale del database.

Identificare e terminare le transazioni di lunga durata

Puoi individuare le transazioni di lunga durata eseguendo la query information_schema.innodb_trx.

Nota

Assicurati inoltre di cercare le transazioni di lunga durata nelle repliche di lettura.

Per identificare e terminare le transazioni di lunga durata
  1. Nel client SQL esegui la seguente query:

    SELECT a.trx_id, a.trx_state, a.trx_started, TIMESTAMPDIFF(SECOND,a.trx_started, now()) as "Seconds Transaction Has Been Open", a.trx_rows_modified, b.USER, b.host, b.db, b.command, b.time, b.state FROM information_schema.innodb_trx a, information_schema.processlist b WHERE a.trx_mysql_thread_id=b.id AND TIMESTAMPDIFF(SECOND,a.trx_started, now()) > 10 ORDER BY trx_started
  2. Termina ogni transazione di lunga durata con la procedura memorizzata. mysql.rds_kill

Usa Approfondimenti sulle prestazioni per individuare i principali host e i migliori utenti.

Ottimizza le transazioni in modo che un numero elevato di righe modificate venga immediatamente sottoposto a commit.

Parametri rilevanti

A questo approfondimento è correlato il seguente parametro:

  • trx_rseg_history_len— Questa metrica contatrice può essere visualizzata in Performance Insights, oltre che nella INFORMATION_SCHEMA.INNODB_METRICS tabella. Per ulteriori informazioni, vedere la tabella delle metriche InnoDB INFORMATION_SCHEMA nella documentazione MySQL.

  • RollbackSegmentHistoryListLength— Questa CloudWatch metrica di Amazon misura i log di annullamento che registrano le transazioni impegnate con record contrassegnati da eliminare. Questi record sono pianificati per essere elaborati dall'operazione di rimozione InnoDB. La metrica trx_rseg_history_len ha lo stesso valore di. RollbackSegmentHistoryListLength

  • PurgeBoundary— Il numero di transazione fino al quale è consentito l'eliminazione da InnoDB. Se questa CloudWatch metrica non avanza per lunghi periodi di tempo, è una buona indicazione che l'eliminazione di InnoDB è bloccata da transazioni di lunga durata. Per indagare, controlla le transazioni attive sul tuo cluster Aurora MySQL DB. Questa metrica è disponibile solo per Aurora MySQL versione 2.11 e successive e versione 3.08 e successive.

  • PurgeFinishedPoint— Il numero di transazione fino al quale viene eseguita l'eliminazione da InnoDB. Questa CloudWatch metrica può aiutarti a esaminare la velocità con cui procede l'eliminazione da InnoDB. Questa metrica è disponibile solo per Aurora MySQL versione 2.11 e successive e versione 3.08 e successive.

  • TransactionAgeMaximum— L'età della transazione attiva più vecchia in esecuzione. Questa CloudWatch metrica è disponibile solo per Aurora MySQL versione 3.08 e successive.

  • TruncateFinishedPoint— Il numero di transazione fino al quale viene eseguito il troncamento dell'annullamento. Questa CloudWatch metrica è disponibile solo per Aurora MySQL versione 2.11 e successive e versione 3.08 e successive.

Per ulteriori informazioni sulle metriche, consulta. CloudWatch Parametri a livello di istanza per Amazon Aurora