LWLock:BufferMapping (LWLock:buffer_mapping) - Layanan Basis Data Relasional Amazon

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

LWLock:BufferMapping (LWLock:buffer_mapping)

Peristiwa ini terjadi saat sesi menunggu untuk mengaitkan blok data dengan buffer di pool buffer bersama.

catatan

Peristiwa ini dinamai LWLock:BufferMapping untuk RDS for PostgreSQL versi 13 dan versi yang lebih tinggi. Untuk RDS for PostgreSQL versi 12 dan versi yang lebih lama, peristiwa ini dinamai LWLock:buffer_mapping.

Versi mesin yang didukung

Informasi peristiwa tunggu ini relevan untuk RDS for PostgreSQL versi 9.6 dan lebih tinggi.

Konteks

Pool buffer bersama adalah area memori PostgreSQL yang menampung semua halaman yang sedang atau telah digunakan oleh proses. Ketika suatu proses membutuhkan halaman, proses ini membacakan halaman tersebut ke dalam pool buffer bersama. Parameter shared_buffers menetapkan ukuran buffer bersama dan menyediakan area memori untuk menyimpan halaman tabel dan indeks. Jika Anda mengganti parameter ini, pastikan untuk mengaktifkan ulang basis data.

Peristiwa LWLock:buffer_mapping tunggu terjadi dalam skenario berikut:

  • Sebuah proses mencari tabel buffer untuk halaman dan memperoleh kunci pemetaan buffer bersama.

  • Sebuah proses memuat halaman ke dalam pool buffer dan memperoleh kunci pemetaan buffer eksklusif.

  • Sebuah proses menghapus halaman dari pool dan memperoleh kunci pemetaan buffer eksklusif.

Penyebab

Ketika peristiwa ini muncul lebih sering dari biasanya, yang mungkin menunjukkan masalah performa, basis data akan melakukan paging masuk dan keluar pada pool buffer bersama. Penyebab umumnya meliputi yang berikut:

  • Kueri besar

  • Indeks dan tabel yang mengalami bloat

  • Pemindaian tabel lengkap

  • Ukuran pool bersama yang lebih kecil dari working set

Tindakan

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

Pantau metrik terkait buffer

Saat LWLock:buffer_mapping menunggu lonjakan, selidiki rasio hit buffer. Anda dapat menggunakan metrik ini untuk mendapatkan pemahaman yang lebih baik tentang apa yang terjadi di cache buffer. Periksa metrik berikut:

blks_hit

Metrik penghitung Wawasan Performa ini menunjukkan jumlah blok yang diambil dari pool buffer bersama. Setelah peristiwa tunggu LWLock:buffer_mapping muncul, Anda mungkin melihat lonjakan blks_hit.

blks_read

Metrik penghitung Wawasan Performa ini menunjukkan jumlah blok yang mengharuskan I/O dibacakan ke dalam pool buffer bersama. Anda mungkin melihat lonjakan blks_read menjelang peristiwa tunggu LWLock:buffer_mapping.

Evaluasi strategi pengindeksan Anda

Untuk mengonfirmasi bahwa strategi pengindeksan Anda tidak menurunkan performa, periksa hal berikut:

Bloat indeks

Pastikan bloat indeks dan tabel tidak menyebabkan halaman yang tidak perlu dibacakan ke buffer bersama. Jika tabel Anda berisi baris yang tidak digunakan, pertimbangkan untuk mengarsipkan datanya dan menghapus baris tersebut dari tabel. Anda kemudian dapat membuat kembali indeks untuk tabel yang diubah ukurannya.

Indeks untuk kueri yang sering digunakan

Untuk menentukan apakah Anda memiliki indeks optimal, pantau metrik mesin DB di Wawasan Performa. Metrik tup_returned menunjukkan jumlah baris yang dibaca. Metrik tup_fetched menunjukkan jumlah baris yang dikembalikan ke klien. Jika tup_returned secara signifikan lebih besar dari tup_fetched, data mungkin tidak diindeks dengan benar. Selain itu, statistik tabel Anda mungkin tidak terkini.

Kurangi jumlah buffer yang harus dialokasikan dengan cepat

Untuk mengurangi peristiwa tunggu LWLock:buffer_mapping, coba kurangi jumlah buffer yang harus dialokasikan dengan cepat. Salah satu strateginya adalah dengan melakukan operasi batch yang lebih kecil. Anda mungkin dapat memiliki batch yang lebih kecil dengan mempartisi tabel Anda.