

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

# LWLock:Bufferio (IPC: Bufferio)
<a name="wait-event.lwlockbufferio"></a>

`LWLock:BufferIO`Peristiwa ini terjadi ketika RDS untuk PostgreSQL sedang menunggu proses lain untuk menyelesaikan operasi (I/O) input/output mereka ketika secara bersamaan mencoba mengakses halaman. Tujuannya adalah agar halaman yang sama dibacakan ke buffer bersama.

**Topics**
+ [Versi mesin yang relevan](#wait-event.lwlockbufferio.context.supported)
+ [Konteks](#wait-event.lwlockbufferio.context)
+ [Penyebab](#wait-event.lwlockbufferio.causes)
+ [Tindakan](#wait-event.lwlockbufferio.actions)

## Versi mesin yang relevan
<a name="wait-event.lwlockbufferio.context.supported"></a>

Informasi peristiwa tunggu ini relevan untuk semua versi RDS for PostgreSQL. Untuk RDS for PostgreSQL 12 dan versi sebelumnya peristiwa tunggu ini dinamai lwlock:buffer\$1io sedangkan di RDS for PostgreSQL versi 13 dinamai lwlock:bufferio. Mulai dari RDS for PostgreSQL versi 14, peristiwa tunggu BufferIO dipindahkan dari jenis peristiwa tunggu `LWLock` ke `IPC` (IPC:BufferIO). 

## Konteks
<a name="wait-event.lwlockbufferio.context"></a>

Setiap buffer bersama memiliki I/O kunci yang terkait dengan peristiwa `LWLock:BufferIO` tunggu, setiap kali blok (atau halaman) harus diambil di luar kumpulan buffer bersama.

Kunci ini digunakan untuk menangani beberapa sesi yang semuanya memerlukan akses ke blok yang sama. Blok ini harus dibaca dari luar pool buffer bersama, yang ditentukan oleh parameter `shared_buffers`.

Segera setelah halaman dibaca di dalam kumpulan buffer bersama, kunci `LWLock:BufferIO` akan dilepaskan.

**catatan**  
Peristiwa tunggu `LWLock:BufferIO` mendahului peristiwa tunggu [IO: DataFileRead](wait-event.iodatafileread.md). Peristiwa tunggu `IO:DataFileRead` terjadi saat data sedang dibaca dari penyimpanan.

Untuk informasi selengkapnya tentang kunci ringan, lihat [Gambaran Umum Penguncian](https://github.com/postgres/postgres/blob/65dc30ced64cd17f3800ff1b73ab1d358e92efd8/src/backend/storage/lmgr/README#L20).

## Penyebab
<a name="wait-event.lwlockbufferio.causes"></a>

Penyebab umum peristiwa `LWLock:BufferIO` muncul dalam peristiwa tunggu teratas mencakup yang berikut:
+ Beberapa backend atau koneksi mencoba mengakses halaman yang sama yang juga menunggu operasi I/O 
+ Rasio antara ukuran pool buffer bersama (ditentukan oleh parameter `shared_buffers`) dan jumlah buffer yang dibutuhkan oleh beban kerja saat ini
+ Ukuran pool buffer bersama tidak seimbang dengan jumlah halaman yang dikosongkan oleh operasi lain
+ Indeks besar atau bloat yang mengharuskan mesin membacakan lebih banyak halaman daripada yang diperlukan ke dalam pool buffer bersama
+ Kurangnya indeks yang memaksa mesin DB untuk membaca lebih banyak halaman dari tabel daripada yang diperlukan
+ Checkpoint terjadi terlalu sering atau perlu melakukan flushing terlalu banyak halaman yang dimodifikasi
+ Lonjakan tiba-tiba untuk koneksi basis data yang mencoba melakukan operasi pada halaman yang sama

## Tindakan
<a name="wait-event.lwlockbufferio.actions"></a>

Kami merekomendasikan berbagai tindakan tergantung pada penyebab peristiwa tunggu Anda:
+ Setel `max_wal_size` dan `checkpoint_timeout` berdasarkan waktu puncak beban kerja Anda jika Anda melihat `LWLock:BufferIO` bertepatan dengan penurunan metrik `BufferCacheHitRatio`. Kemudian, identifikasi kueri mana yang mungkin menyebabkannya.
+ Verifikasi apakah Anda memiliki indeks yang tidak digunakan, lalu hapus.
+ Gunakan tabel yang dipartisi (yang juga memiliki indeks yang dipartisi). Dengan melakukan hal ini, Anda dapat menjaga penyusunan ulang indeks tetap rendah dan mengurangi dampaknya.
+ Hindari kolom pengindeksan yang tidak perlu.
+ Cegah lonjakan koneksi basis data yang tiba-tiba dengan menggunakan pool koneksi.
+ Batasi jumlah maksimum koneksi ke basis data sebagai praktik terbaik.