#postgresql
Вопрос:
Я тестирую checkpoint_completion_target в RDS PostgreSQL и вижу, что контрольная точка занимает в общей сложности 28,5 секунды. Тем не менее, я настроил
checkpoint_completion_target = 0.9
checkpoint_timeout = 300
В соответствии с этим, должна ли контрольная точка распространяться на 300*0,9, что составляет 270 секунд?
PostgreSQL версии 11.10
Лог:
2021-03-19 16:06:47 UTC::@:[25023]:LOG: checkpoint starting: time
2021-03-19 16:07:16 UTC::@:[25023]:LOG: checkpoint complete: wrote 283 buffers (0.2%); 0 WAL file(s) added, 0 removed, 1 recycled; write=28.500 s, sync=0.006 s, total=28.533 s; sync files=56, longest=0.006 s, average=0.000 s; distance=64990 kB, estimate=68721 kB
Ответ №1:
Контрольный указатель реализует свое регулирование, отключаясь на 0,1 секунды. И нет никаких условий для записи более одного сна на буфер, который необходимо записать. Поэтому, если предстоит выполнить очень мало работы, она завершится рано, несмотря на настройку checkpoint_completion_target.
Комментарии:
1. Спасибо @jjanes . Просто для подтверждения я понимаю, что это зависит от доступности ресурсов, таких как процессор, память и ввод-вывод. Если в каком-либо из ресурсов есть разногласия, checkpointer реализует регулирование, чтобы распространить процесс на checkpoint_completion_target, и если разногласий нет, checkpointer завершает процесс как можно раньше. я прав?