PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

wal_keep_segments защо минимум, а не максимум?

За да отговоря директно на въпроса ви, защо минимум и защо не максимум? Тъй като новите WAL сегменти могат да растат по-бързо от RemoveOldXlogFiles(_logSegNo, recptr) функция може да изтрие старите.

Освен това формулата за изчисляване на вероятния брой WAL сегменти в документите е грешна. Винаги имам няколко повече WAL от checkpoint_segments + wal_keep_segments + 1 Много по-точна формула е следната:wal_keep_segments + 2 * checkpoint_segments + 1

Тук има една стара, но наистина добра публикация за това:http://www.postgresql.org/message-id/[email protected]

Ако правите масивни вмъквания, вашите WAL сегменти ще растат по-бързо, отколкото могат да бъдат премахнати. Това ме хвана точно тази седмица. Очаквах pg_xlog да поддържа относително постоянен размер. Имаше голям процес, изпълняван през нощта и когато отидох на работа на следващата сутрин, екземплярът ми на postgres се срина, тъй като томът, който монтирах, за да пусна тези WAL, беше напълно пълен. Postgres напълни тома, опита се да напише още повече WAL, не можа и внезапно умря. За щастие изпълняваме реплики зад pgpool2.

Ако имате любопитен ум, насърчавам ви да прегледате изходния код на postgres. Той е гигантски и е на C, но коментарите в кода наистина помагат. Този файл е особено поучителен, тъй като навлиза в гайките и болтовете на това как работи контролната точка и как се случва премахването на стари WAL сегменти: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. Обединява jsonArrayAgg в празен масив в jOOQ

  2. Как да намеря най-голямата стойност в колона в postgres sql?

  3. Обхват за незадължителна връзка has_one със себе си

  4. Лесен начин за нулиране на Django PostgreSQL база данни?

  5. Показване на PostGIS данни с Leafletjs