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 SQL Versi saya 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. Saya SQL menggunakan algoritma (LRU) yang paling jarang digunakan untuk mengusir halaman dari kumpulan 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 kumpulan buffer. LRU 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 Buffer Pool
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.
Topik
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 SQL database Amazon Aurora Saya
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 menggunakan Wawasan Performa untuk menampilkan kueri dan sesi yang mungkin menyebabkan peristiwa tunggu synch/sxlock/innodb/hash_table_locks
.
Untuk menemukan SQL kueri yang bertanggung jawab atas beban tinggi
Masuk ke AWS Management Console dan buka RDS konsol Amazon di https://console.aws.amazon.com/rds/
. -
Di panel navigasi, pilih Wawasan Performa.
-
Pilih instans DB. Dasbor Wawasan Performa ditampilkan untuk instans DB tersebut.
-
Dalam bagan Beban basis data, pilih Potong berdasarkan masa tunggu.
-
Di bagian bawah halaman, pilih Top SQL.
Bagan mencantumkan SQL kueri yang bertanggung jawab atas pemuatan. Kueri di bagian atas daftar memiliki tanggung jawab terbesar. Untuk mengatasi kemacetan, fokus pada pernyataan tersebut.
Untuk ikhtisar berguna tentang pemecahan masalah menggunakan Performance Insights, lihat posting Blog Database Menganalisis AWS Beban Kerja SQL Saya Amazon Aurora
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
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.