Panjang daftar riwayat InnoDB meningkat secara signifikan - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Panjang daftar riwayat InnoDB meningkat secara signifikan

Mulai daridate, daftar riwayat Anda untuk perubahan baris meningkat secara signifikan, hingga length aktifdb-instance. Peningkatan ini memengaruhi performa penonaktifan kueri dan basis data.

Versi mesin yang didukung

Informasi wawasan ini didukung untuk semua versi Aurora MySQL.

Konteks

Sistem transaksi InnoDB mempertahankan kontrol konkurensi multiversi (MVCC). Ketika baris diubah, versi pra-modifikasi dari data yang diubah disimpan sebagai catatan undo dalam log undo. Setiap data undo memiliki referensi ke data redo sebelumnya, yang membentuk daftar tertaut.

Daftar riwayat InnoDB adalah daftar global log undo untuk transaksi yang dilakukan. MySQL menggunakan daftar riwayat untuk membersihkan data dan halaman log saat transaksi tidak lagi memerlukan riwayat. Panjang daftar riwayat adalah jumlah total log undo yang berisi perubahan dalam daftar riwayat. Setiap log berisi satu atau beberapa modifikasi. Jika panjang daftar riwayat InnoDB bertambah terlalu besar, yang menunjukkan sejumlah besar versi baris lama, kueri dan penonaktifan basis data menjadi lebih lambat.

Kemungkinan penyebab masalah ini

Penyebab umum dari daftar riwayat panjang meliputi:

  • Transaksi yang berjalan lama, baik baca atau tulis

  • Beban tulis yang berat

Tindakan

Kami merekomendasikan tindakan yang berbeda bergantung pada penyebab wawasan Anda.

Jangan memulai operasi apa pun yang melibatkan penonaktifan basis data hingga daftar riwayat InnoDB berkurang

Karena daftar riwayat InnoDB yang panjang memperlambat penonaktifan basis data, kurangi ukuran daftar sebelum memulai operasi yang melibatkan penonaktifan basis data. Operasi ini meliputi peningkatan basis data versi utama.

Mengidentifikasi dan mengakhiri transaksi yang berjalan lama

Anda dapat menemukan transaksi yang berjalan lama dengan mengueri information_schema.innodb_trx.

catatan

Pastikan juga untuk mencari transaksi jangka panjang pada replika baca.

Untuk mengidentifikasi dan mengakhiri transaksi yang berjalan lama
  1. Di klien SQL Anda, jalankan kueri berikut:

    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. Akhiri setiap transaksi yang berjalan lama dengan prosedur mysql.rds_kill yang disimpan.

Mengidentifikasi host teratas dan pengguna teratas dengan menggunakan Wawasan Performa.

Optimalkan transaksi agar sejumlah besar baris yang dimodifikasi segera dilakukan.

Metrik terkait

Metrik berikut terkait dengan wawasan ini:

  • trx_rseg_history_len— Metrik penghitung ini dapat dilihat di Performance Insights, serta tabel. INFORMATION_SCHEMA.INNODB_METRICS Untuk informasi selengkapnya, lihat tabel metrik InnoDB INFORMATION_SCHEMA dalam dokumentasi MySQL.

  • RollbackSegmentHistoryListLength— CloudWatch Metrik Amazon ini mengukur log pembatalan yang mencatat transaksi yang dilakukan dengan catatan yang ditandai hapus. Catatan ini dijadwalkan untuk diproses oleh operasi purge InnoDB. Metrik trx_rseg_history_len memiliki nilai yang sama denganRollbackSegmentHistoryListLength.

  • PurgeBoundary— Nomor transaksi yang memungkinkan pembersihan InnoDB. Jika CloudWatch metrik ini tidak maju untuk jangka waktu yang lama, ini merupakan indikasi yang baik bahwa pembersihan InnoDB diblokir oleh transaksi yang berjalan lama. Untuk menyelidiki, periksa transaksi aktif pada cluster DB MySQL Aurora Anda. Metrik ini hanya tersedia untuk Aurora MySQL versi 2.11 dan lebih tinggi, dan versi 3.08 dan lebih tinggi.

  • PurgeFinishedPoint— Nomor transaksi hingga pembersihan InnoDB dilakukan. CloudWatch Metrik ini dapat membantu Anda memeriksa seberapa cepat proses pembersihan InnoDB. Metrik ini hanya tersedia untuk Aurora MySQL versi 2.11 dan lebih tinggi, dan versi 3.08 dan lebih tinggi.

  • TransactionAgeMaximum— Usia transaksi berjalan aktif tertua. CloudWatch Metrik ini hanya tersedia untuk Aurora MySQL versi 3.08 dan lebih tinggi.

  • TruncateFinishedPoint— Nomor transaksi hingga pemotongan undo dilakukan. CloudWatch Metrik ini hanya tersedia untuk Aurora MySQL versi 2.11 dan lebih tinggi, dan versi 3.08 dan lebih tinggi.

Untuk informasi selengkapnya tentang CloudWatch metrik, lihatMetrik tingkat instans untuk Amazon Aurora.