PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

wal_keep_segments mengapa minimum, bukan maksimum?

Untuk menjawab pertanyaan Anda secara langsung, mengapa minimum dan mengapa tidak maksimum? Karena segmen WAL baru dapat tumbuh lebih cepat daripada RemoveOldXlogFiles(_logSegNo, recptr) fungsi dapat menghapus yang lama.

Juga, rumus untuk menghitung kemungkinan jumlah segmen WAL dalam dokumen salah. Saya selalu memiliki beberapa WAL lebih banyak daripada checkpoint_segments + wal_keep_segments + 1 Rumus yang jauh lebih akurat adalah ini:wal_keep_segments + 2 * checkpoint_segments + 1

Ada posting lama, tapi sangat bagus tentang ini di sini:http://www.postgresql.org/message-id/[email protected]

Jika Anda melakukan penyisipan besar-besaran, segmen WAL Anda akan tumbuh lebih cepat daripada yang dapat dihapus. Ini membuat saya hanya minggu ini. Saya berharap pg_xlog mempertahankan ukuran yang relatif konstan. Ada proses besar yang berjalan di malam hari dan ketika saya mulai bekerja keesokan paginya, instance postgres saya macet karena volume yang saya pasang untuk memasang WAL tersebut benar-benar penuh. Postgres memenuhi volume, mencoba menulis lebih banyak WAL, tidak bisa, dan tiba-tiba mati. Untungnya kami menjalankan replika di belakang pgpool2.

Jika Anda memiliki pikiran yang ingin tahu, saya mendorong Anda untuk menelusuri kode sumber postgres. Ini raksasa dan dalam C, tetapi komentar kode sangat membantu. File ini khususnya mencerahkan karena masuk ke inti dan baut tentang cara kerja pos pemeriksaan dan bagaimana menghapus segmen WAL lama terjadi:https://github.com/postgres/postgres/blob/master/src/backend/access/transam/xlog.c



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan PostgreSQL 9.2.1 dengan Hibernate

  2. Bagaimana cara mengubah format tanggal di Postgres?

  3. Temukan nama host server PostgreSQL yang menjalankannya

  4. Mendapatkan semua Bangunan dalam jangkauan 5 mil dari koordinat yang ditentukan

  5. Bisakah saya menggunakan perintah \copy ke dalam fungsi postgresql?