한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L12 Database

Checkpoint dan log flush Checkpoint / log flush stalls

ID penyebab db-checkpoint · Penanggung jawab utama Infrastruktur DB (Tim Infrastruktur)

Buka kartu interaktif dengan gambar dan simulasi →

Query melambat saat DB secara berkala menulis sekaligus perubahan yang tersimpan di memori ke disk.

Mengapa Perubahan menumpuk lalu ditulis ke disk secara berkala → Akibatnya Saat itu disk sibuk sehingga query melambat → Di layar Penyimpanan dan loading melambat secara berkala

Gejala
Input lag, Patah-patah
Faktor
Latensi
Siapa yang mengalami
Seluruh server, Fitur tertentu saja
Kapan
Secara berkala
Penanggung jawab
Penanggung jawab utama Infrastruktur DB (Tim Infrastruktur)
Tugas Tim Infrastruktur
Pecah checkpoint menjadi bagian kecil agar penulisannya merata, beri ukuran log transaksi (redo log, WAL) yang lega, gunakan disk yang cepat.
Di grafik
Melonjak secara berkala · Latensi query DB, volume tulis disk
Yang diperiksa
PostgreSQL: periksa waktu checkpoint dan jumlah buffer yang ditulis di log log_checkpoints (aktif secara default di versi terbaru), jumlah checkpoint (versi 17 ke atas: num_timed dan num_requested di pg_stat_checkpointer; versi 16 ke bawah: checkpoints_timed dan checkpoints_req di pg_stat_bgwriter), serta peringatan checkpoint_warning. MySQL: periksa selisih Log sequence number dan Last checkpoint at di bagian LOG pada SHOW ENGINE INNODB STATUS. Tumpangkan juga volume tulis dan latensi tulis disk di server
Cocok jika
Waktu lonjakan latensi query bertepatan dengan waktu checkpoint, dan saat itu volume tulis serta latensi tulis disk melonjak. Di PostgreSQL, jika checkpoint atas permintaan (num_requested) jauh lebih banyak daripada checkpoint terjadwal (num_timed), artinya WAL sering mencapai max_wal_size sehingga checkpoint terjadi lebih awal
Tidak cocok jika
Melonjak dengan periode yang tidak terkait waktu checkpoint: lebih mungkin backup atau batch job (dk-backup, db-batch)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Jika log transaksi yang menyimpan catatan perubahan (redo log di MySQL, WAL di PostgreSQL) diatur terlalu kecil, DB terpaksa menjalankan checkpoint sekaligus secara terburu-buru setiap kali log penuh, sehingga throughput penulisan berulang kali anjlok tajam untuk sesaat.

Sumber

  1. WAL Configuration (PostgreSQL Documentation) PostgreSQL
    Secara default checkpoint terjadi setiap 5 menit atau setiap 1 GB WAL (max_wal_size) dan mahal karena menulis semua dirty page. checkpoint_completion_target menyebar penulisan untuk menghindari lonjakan I/O. Jika interval checkpoint lebih pendek dari checkpoint_warning, log mencatat peringatan agar max_wal_size dinaikkan
  2. Configuring Buffer Pool Flushing MySQL
    Saat redo log penuh, sharp checkpoint (checkpoint mendadak) membuat throughput turun sesaat; adaptive flushing menyebar penulisan secara merata
  3. Error Reporting and Logging (PostgreSQL Documentation) PostgreSQL
    log_checkpoints: mencatat jumlah buffer yang ditulis dan lama setiap checkpoint di log; default aktif
  4. The Cumulative Statistics System (PostgreSQL Documentation) PostgreSQL
    num_timed (checkpoint yang dijalankan karena waktunya tiba) dan num_requested (checkpoint yang diminta) di pg_stat_checkpointer
  5. PostgreSQL 17 Release Notes PostgreSQL
    pg_stat_checkpointer ditambahkan, kolom terkait checkpoint dipindahkan dari pg_stat_bgwriter
  6. The Cumulative Statistics System (PostgreSQL 16 Documentation) PostgreSQL
    Sampai versi 16: checkpoints_timed dan checkpoints_req di pg_stat_bgwriter
  7. InnoDB Standard Monitor and Lock Monitor Output MySQL
    Bagian LOG: log sequence number saat ini dan posisi checkpoint terakhir

Lihat juga

Lapisan yang sama: L12 Database

Penyebab di lapisan lain dengan gejala yang sama (Input lag)

Lihat kartu interaktif dengan gambar dan simulasi