synch/sxlock/innodb/hash_table_locks - Amazon Aurora

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

synch/sxlock/innodb/hash_table_locks

Peristiwa synch/sxlock/innodb/hash_table_locks terjadi ketika halaman yang tidak ditemukan di pool buffer harus dibaca dari penyimpanan.

Versi mesin yang didukung

Informasi peristiwa tunggu ini didukung untuk versi berikut:

  • Aurora MySQL versi 2 dan 3

Konteks

Peristiwa synch/sxlock/innodb/hash_table_locks menunjukkan bahwa beban kerja sering kali mengakses data yang tidak disimpan dalam pool buffer. Peristiwa tunggu ini dikaitkan dengan penambahan halaman baru dan pengosongan data lama dari pool buffer. Data yang disimpan dalam pool buffer usang dan data baru harus di-cache, jadi halaman usang dikosongkan untuk memungkinkan caching halaman baru. MySQL menggunakan algoritma least recently used (LRU) untuk mengosongkan halaman dari pool buffer. Beban kerja mencoba mengakses data yang belum dimuat ke dalam pool buffer atau data yang telah dikosongkan dari pool buffer.

Peristiwa tunggu ini terjadi ketika beban kerja harus mengakses data dalam file pada disk atau ketika blok dibebaskan dari atau ditambahkan ke daftar LRU pool buffer. Operasi ini menunggu untuk memperoleh kunci yang dikecualikan bersama (SX-lock). SX-lock ini digunakan untuk sinkronisasi melalui tabel hash, yakni tabel dalam memori yang dirancang untuk meningkatkan performa akses pool buffer.

Untuk informasi selengkapnya, lihat Pool Buffer dalam dokumentasi MySQL.

Kemungkinan penyebab peningkatan peristiwa tunggu

Saat peristiwa tunggu synch/sxlock/innodb/hash_table_locks muncul lebih dari biasanya, yang mungkin menunjukkan adanya masalah performa, berikut adalah penyebab umumnya:

Pool buffer berukuran sangat kecil

Ukuran pool buffer terlalu kecil untuk menyimpan semua halaman yang sering diakses dalam memori.

Beban kerja berat

Beban kerja menyebabkan seringnya pengosongan dan halaman data dimuat ulang di cache buffer.

Kesalahan membaca halaman

Terjadi kesalahan saat membaca halaman di pool buffer, yang mungkin mengindikasikan adanya kerusakan data.

Tindakan

Kami merekomendasikan berbagai tindakan, tergantung pada penyebab peristiwa tunggu Anda.

Meningkatkan ukuran pool buffer

Pastikan pool buffer memiliki ukuran yang sesuai untuk beban kerja. Untuk melakukannya, Anda dapat memeriksa laju hit cache pool buffer. Biasanya, jika nilainya turun di bawah 95%, coba tingkatkan ukuran pool buffer. Pool buffer yang lebih besar dapat lebih lama menyimpan halaman yang sering diakses dalam memori. Untuk meningkatkan ukuran pool buffer, ubah nilai parameter innodb_buffer_pool_size. Nilai default parameter ini didasarkan pada ukuran kelas instans DB. Untuk informasi selengkapnya, lihat Praktik terbaik untuk konfigurasi basis data Amazon Aurora MySQL.

Meningkatkan pola akses data

Periksa kueri yang terpengaruh oleh peristiwa tunggu ini dan rencana eksekusinya. Coba tingkatkan pola akses data. Misalnya, jika menggunakan mysqli_result::fetch_array, Anda dapat mencoba meningkatkan ukuran pengambilan array.

Anda dapat menggunakan Wawasan Performa untuk menampilkan kueri dan sesi yang mungkin menyebabkan peristiwa tunggu synch/sxlock/innodb/hash_table_locks.

Untuk menemukan kueri SQL yang bertanggung jawab atas beban tinggi:
  1. Masuk ke AWS Management Console, lalu buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Wawasan Performa.

  3. Pilih instans DB. Dasbor Wawasan Performa ditampilkan untuk instans DB tersebut.

  4. Dalam bagan Beban basis data, pilih Potong berdasarkan masa tunggu.

  5. Di bagian bawah halaman, pilih SQL Teratas.

    Bagan ini mencantumkan kueri SQL yang bertanggung jawab atas beban. Kueri di bagian atas daftar memiliki tanggung jawab terbesar. Untuk mengatasi kemacetan, fokus pada pernyataan tersebut.

Untuk ikhtisar pemecahan masalah yang berguna menggunakan Wawasan Performa, lihat postingan Blog Basis Data AWS, Menganalisis Beban Kerja Amazon Aurora MySQL dengan Wawasan Performa.

Mengurangi atau mencegah pemindaian tabel penuh

Pantau beban kerja untuk melihat apakah pemindaian tabel penuh dijalankan, dan jika ya, kurangi atau cegah pemindaian tersebut. Misalnya, Anda dapat memantau variabel status seperti Handler_read_rnd_next. Untuk informasi selengkapnya, lihat Variabel Status Server dalam dokumentasi MySQL.

Memeriksa log kesalahan untuk kerusakan halaman

Anda dapat memeriksa mysql-error.log untuk pesan terkait kerusakan yang terdeteksi menjelang waktu terjadinya masalah. Pesan yang dapat Anda tangani untuk menyelesaikan masalah terdapat di log kesalahan. Anda mungkin perlu membuat ulang objek yang dilaporkan rusak.