

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

# synch/sxlock/innodb/hash\$1table\$1locks
<a name="ams-waits.sx-lock-hash-table-locks"></a>

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

**Topics**
+ [Versi mesin yang didukung](#ams-waits.sx-lock-hash-table-locks.context.supported)
+ [Konteks](#ams-waits.sx-lock-hash-table-locks.context)
+ [Kemungkinan penyebab peningkatan peristiwa tunggu](#ams-waits.sx-lock-hash-table-locks.causes)
+ [Tindakan](#ams-waits.sx-lock-hash-table-locks.actions)

## Versi mesin yang didukung
<a name="ams-waits.sx-lock-hash-table-locks.context.supported"></a>

Informasi peristiwa tunggu ini didukung untuk versi berikut:
+ Aurora SQL Versi saya 2 dan 3

## Konteks
<a name="ams-waits.sx-lock-hash-table-locks.context"></a>

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](https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool.html) di SQL dokumentasi Saya.

## Kemungkinan penyebab peningkatan peristiwa tunggu
<a name="ams-waits.sx-lock-hash-table-locks.causes"></a>

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
<a name="ams-waits.sx-lock-hash-table-locks.actions"></a>

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

**Topics**
+ [Meningkatkan ukuran pool buffer](#ams-waits.sx-lock-hash-table-locks.actions.increase-buffer-pool-size)
+ [Meningkatkan pola akses data](#ams-waits.sx-lock-hash-table-locks.actions.improve-data-access-patterns)
+ [Mengurangi atau mencegah pemindaian tabel penuh](#ams-waits.sx-lock-hash-table-locks.actions.reduce-full-table-scans)
+ [Memeriksa log kesalahan untuk kerusakan halaman](#ams-waits.sx-lock-hash-table-locks.actions.check-error-logs)

### Meningkatkan ukuran pool buffer
<a name="ams-waits.sx-lock-hash-table-locks.actions.increase-buffer-pool-size"></a>

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](https://aws.amazon.com/blogs/database/best-practices-for-amazon-aurora-mysql-database-configuration/).

### Meningkatkan pola akses data
<a name="ams-waits.sx-lock-hash-table-locks.actions.improve-data-access-patterns"></a>

Periksa kueri yang terpengaruh oleh peristiwa tunggu ini dan rencana eksekusinya. Coba tingkatkan pola akses data. Misalnya, jika menggunakan [mysqli\$1result::fetch\$1array](https://www.php.net/manual/en/mysqli-result.fetch-array.php), 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 SQL kueri yang bertanggung jawab atas beban tinggi**

1. Masuk ke Konsol Manajemen AWS dan buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Wawasan Performa**.

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

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

1. 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](https://aws.amazon.com/blogs/database/analyze-amazon-aurora-mysql-workloads-with-performance-insights/) dengan Performance Insights.

### Mengurangi atau mencegah pemindaian tabel penuh
<a name="ams-waits.sx-lock-hash-table-locks.actions.reduce-full-table-scans"></a>

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](https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html#statvar_Handler_read_rnd_next) dalam SQL dokumentasi Saya.

### Memeriksa log kesalahan untuk kerusakan halaman
<a name="ams-waits.sx-lock-hash-table-locks.actions.check-error-logs"></a>

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.