25.2. WAL ����

�м����� WAL ��صIJ�����Ӱ�����ݿ����ܡ� �����������ǵ�ʹ�á����� Section 16.4 ��ȡ�йط��������ò�����һ����Ϣ��

���㣨Checkpoints�� �����������еĵ㣬 ���DZ�֤�ڸõ�֮ǰ��������־��Ϣ�����µ������ļ���ȥ�ˡ� �ڼ���ʱ������������ҳ����ˢ�����̲�������־�ļ���д��һ������ļ����¼�� ����ǣ��ڷ���������ʱ�򣬻ָ�����֪��Ӧ�ô���־�е��ĸ��㣨���� redo ��¼����ʼ�� REDO ������ ��Ϊ�ڸü�¼ǰ�Ķ������ļ����κ��޸Ķ��Ѿ��ڴ������ˡ� ����ɼ��㴦��֮���κ��� redo ��¼֮ǰд����־�ζ�������Ҫ�� ��˿���ѭ��ʹ�û���ɾ�������ڽ��� WAL �鵵��ʱ�� ��Щ��־��ѭ�����û���ɾ��֮ǰ�����ȹ鵵����

�������ĺ��д���̽�ÿ�����ʱ����Զ�ִ��һ�����㡣 ÿ�� checkpoint_segments ����־�ξʹ���һ�����㣬 ����ÿ�� checkpoint_timeout �봴��һ���� ���ȵ�Ϊ׼��ȱʡ���÷ֱ��� 3 ���κ� 300 �롣 ����Ҳ������ SQL ���� CHECKPOINT ǿ��һ�����㡣

���� checkpoint_segments ��/�� checkpoint_timeout ��������Ƶ��һЩ�� �������������ı�����ָ�����Ϊ��Ҫ�����Ĺ������٣��������� ���DZ��������Ŀ�ĺ͸�Ƶ���س�ˢ������ҳ�������Ķ��⿪��֮��ȡ��ƽ�⡣ ���⣬Ϊ�˱�֤����ҳ��һ���ԣ���ÿ������֮��ĵ�һ������ҳ�ı仯�ᵼ�¶�����ҳ�����ݵ���־��¼�� ��ˣ�����ʱ�������˻ᵼ������� WAL ��־�е����ݵ����ӣ������һ�������̼����Ŀ�꣬ ������ô�Ŷ����������Ĵ��� I/O��

���㿪���൱�ߣ���������Ϊ����Ҫд�����е�ǰ��Ļ���������ʵ����Ϊ���ǵ����������۵Ķ���ĺ�� WAL ������ ��˰Ѽ���������õ��㹻�ߣ��ü��㷢����Ƶ�ʽ��������ǵġ�Ҫ����ļ��������һ�����Լ죬�������� checkpoint_warning ������������㷢���ļ���ӽ� checkpoint_warning �룬 ��ô�����������־���һ����Ϣ������������ checkpoint_segments ����ֵ�� ż�����ֵ������ľ��沢���ᵼ�¾��棬������������ֵ�̫Ƶ������ô��Ӧ�����Ӽ�����Ʋ�����

���ٻ���һ�� WAL ���ļ�������ͨ�����ᳬ�� 2 * checkpoint_segments + 1 ���ļ���ÿ�����ļ�ͨ�� 16MB �󣨵�Ȼ�������������������ʱ���޸����������������Щ��Ϣ������ WAL ��Ҫ�Ŀռ䡣 ͨ�������һ���ɵ���־���ļ�������Ҫ�ˣ���ô�����õ�ѭ��ʹ�ã�������Ϊ˳�����һ�����öΣ��� ������ڶ��ڵ���־�����ֵ�������˳��� 2 * checkpoint_segments + 1 �����ļ��� ��ô��ϵͳ�ٴλص��������֮�ڵ�ʱ�򣬶��ڵĶ��ļ��ᱻɾ����������ѭ��ʹ�á�

���������õ� WAL ������ LogInsert �� LogFlush�� LogInsert ���������ڴ��е� WAL ���������һ���µļ�¼�����û�пռ����¼�¼�� ��ôLogInsert �Ͳ��ò�д�������ں˻�����д��һЩ�����˵�WAL���塣 ���ǿɲ�����������Ϊ LogInsert ����ÿ�����ݿ�Ͳ��޸ģ����磬��¼���룩�� ��Ҫ������Ӱ�������ҳ�ϳ���һ����������ʱ�䣬��Ϊ�ò�����ҪԽ��Խ�ã��������ǣ� д WAL ������ܻ���ǿ�ƴ����µ���־�Σ� ������ʱ���������ࡣͨ����WAL ������Ӧ����һ�� LogFlush ������д�ͳ�ˢ�� �ڴ󲿷�ʱ�������Ƿ����������ύ��ʱ����ȷ�������¼����ˢ�����ô洢����ȥ�ˡ�����Щ��־�������Ƚϴ��ϵͳ�ϣ� LogFlush ������ܲ���Ƶ���������Ͳ��ܱ��� LogInsert ����д��������������ϵͳ�ϣ�����Ӧ��ͨ���޸����ò��� wal_buffers ��ֵ������ WAL ��������������ȱʡ�� WAL ������������ 8�����������ֵ����ɶ�Ӧ�Ĺ����ڴ�ʹ���������ӡ� ��Ҫע����ǣ�Ŀǰ����û��ʲô֤�ݱ����� wal_buffers ���������󳬹�ȱʡ��ֵ�õġ���

commit_delay �����˺����ʹ�� LogInsert ����־��д��һ�����ύ�ļ�¼֮�� ��ִ��һ�� LogFlush ֮ǰ���ߵĺ������� �������ӳٿ������������ĺ�˰������ύ�ļ�¼׷�ӵ���־�У������Ϳ�����һ����־ͬ����������־��ˢ����־�С� ���û�д�fsync���ߵ�ǰ���� commit_siblings ��������˴��ڻ�Ծ����״̬��ʱ���򲻻ᷢ�����ߣ� �����ͱ���������������һʱ��᲻���ύ�������˯�ߡ� ��ע���ڴ����ƽ̨�ϣ�����Ҫ��ķֱ�����ʮ���룬 �����κν��� 1 �� 10000 ΢��֮��ķ��� commit_delay �����ö���һ���ġ� ������Щ�����ıȽϺõ���ֵ����̫��������ǹ�����������顣

wal_sync_method ��������PostgreSQL ��������ں�ǿ�ƽ� WAL ������������̡�ֻҪ����ɿ��ԣ���ô����ѡ��Ӧ�ö���һ���ģ������ĸ��������ܺ�ƽ̨������ء� ��ע�������ر��� fsync����ô�������������ν�ˡ�

�� wal_debug ���ò�����ǰ���� PostgreSQL�����ʱ��������֧�֣� ������ÿ�� LogInsert �� LogFlush WAL ���ö�����¼����������־�����ѡ���Ժ���ܻᱻ��ͨ�õĻ���ȡ����