PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
Ϊ�˱�������װ�� PostgreSQL ������ƽ������, ���DZ�����һЩ�ճ��Ե�ά���������������������۵���Щ�������Ǿ����ظ������飬 ���Ժ�����ʹ�ñ��� Unix ���ߣ�����cron �ű���ʵ�֡� ���������ú��ʵĽű��Լ���������Ƿ�ɹ�ִ���������ݿ����Ա�����Σ�
һ�������Ե�ά���������Ǿ����Եش������ݵı��ݿ����� ���û������ı��ݣ���ô���û�д������лָ��Ļ��ᣨ������̻��ˣ�ʧ����ɾ�˱�ȵȣ��� ������PostgreSQL ����ʹ�õı��ݺͻָ������� Chapter 22 �����бȽ���ϸ�����ۡ�
������Ҫ��ά������Ĺ������������Ե� "vacuuming" ���������ݿ⡣ ������������� Section 21.1�����ۡ�
������Ҫ������ע��Ķ�������־�ļ��Ĺ��� ������ Section 21.3 ��������������⡣
PostgreSQL ���������ݿ��Ʒ�Ƚ������ǵ�ά�����ġ� ���ǣ��ʵ�����Щ�����Ϸ�һЩע�⽫�����ܹ�ȷ�����ǵ���칤���ͻ�ȡ�����ϵͳ���г�Ч�ľ��顣
�������¼���ԭ�������������� PostgreSQL �� VACUUM �����
�ָ���Щ���Ѹ��µĻ���ɾ������ռ�ݵĴ��̿ռ䣮
���� PostgreSQL ��ѯ�滮��ʹ�õ�����ͳ����Ϣ��
������Ϊ���� ID �ص���ɵ��Ͼ����ݵĶ�ʧ��
������ÿ���������� VACUUM ������Ƶ�ʺͷ�Χ�� ��ͬ�Ľڵ����ͬ����ˣ����ݿ����Ա���������Щ���Ⲣ�� ���������ʵ�ά�����ԣ����ڵ��ص�ͷ��ڽ�����Щ��������⣻ �����������ϸ�ڣ������ VACUUM �����ֲ�ҳ��
�� PostgreSQL 7.2 ��ʼ�� VACUUM �ı���ʽ���Ժ���ͨ�����ݿ���� ��selects, inserts, updates, deletes, ��������������ģ��� ����ճ�������Ҳ��������ǰ�İ汾�������и����ԣ� Ҳ������ô�ر�Ҫ������ÿ��ĵ�ʹ�õ�ʱ������У�
�� PostgreSQL 8.0 ��ʼ����һЩ���ò����������ã� ������һ����С�������ĵ�����Ӱ�졣���� Section 16.4.3.4��
�������� PostgreSQL ����� ��һ�е�UPDATE��DELETE��δ����ɾ���ɰ汾�������С� ����������ڻ�ȡ��汾���п��Ƶĺô��DZ�Ҫ�ģ����� Chapter 12���� ���һ���еİ汾���п��ܱ�������������ô��Ͳ���ɾ������ ��������������κ�����Թ��ڵĻ����Ѿ�ɾ����Ԫ�����Ȥ�� ����ռ�ݵĿռ����Ϊ��Щ�µ�Ԫ��ʹ�ö����գ� �Ա���Դ��̿ռ�����������ֹ�������������ͨ������ VACUUM ʵ�ֵġ�
�����ԣ���Щ�������»���ɾ��Ԫ��ı���Ҫ����Щ���ٸ��µı�����ĸ�Ƶ��һЩ�� ���ԣ�����һ�������Ե� cron ���� VACUUM ��Щѡ���ı���������Щ�Ѿ�֪���仯�Ƚ��ٵı� �������ֻ������ӵ�д�������Ƶ���ı�ʹ������ٸ��µı��ʱ�������� — ����һ��С��Ķ����������ֵ�õ��ģ�
VACUUM �������������֡���һ����ʽ������"���� vacuum"����ֻ�� VACUUM�� �ڱ�������б�ǹ��ڵ�����Ϊ����ʹ�ã���������ͼ�����ָ���Щ��������ʹ�õĿռ䡣 ��ˣ����ļ�������С�������κ��ļ���û��ʹ�õĿռ䶼���᷵�ظ�����ϵͳ�� ������ֵ� VACUUM ���Ժ�ͨ�������ݿ��������ִ�С�
�ڶ�����ʽ�� VACUUM FULL ��� �����ʽʹ��һ�ָ��Ӽ������㷨���ָ����ڵĵ��а汾ռ�ݵĿռ䡣 �κ� VACUUM FULL �ͷŵĿռ䶼�������ظ�����ϵͳ�� ���ǣ������ʽ�� VACUUM �����ڽ��� VACUUM FULL һ�����ʱ��������Ҫ��һ���������� ��ˣ�����ʹ�� VACUUM FULL ��Բ������ݿ��ѯ���ŷdz�����Ӱ�졣
����ʽ�� VACUUM ���ʺ�����ά���൱�̶ȵĴ����������ȶ�״̬�� �������Ҫ�Ѵ��̿ռ�黹������ϵͳ����ô�����ʹ�� VACUUM FULL — ��������ͷŵĴ��̿ռ��ֻ�ܿ��ٴα������������� ���ά������Ƶ���ı���ô�е�Ƶ�ʵĶ�α� VACUUM ���з����Ⱥܵ�Ƶ�ʵ� VACUUM FULL ���á�
���ڴ�����ڵ���ԣ������Ƽ���ϰ������һ���еĵ�ʹ�õ�ʱ�ΰ���һ���������ݿ�� VACUUM�� ��Ҫʱ��ӶԸ���Ƶ���ı�ĸ����������� ����Щ�����£�����Щ���·dz�Ƶ���ı���ܻ�ÿ�����Ӿ� VACUUM һ�Ρ��� �����ļ�Ⱥ���ж�����ݿ⣬�����Ƕ�ÿ�����������vacuumdb �ű����ܻ�����æ��
��ʾ: contrib/pg_autovacuum �������ڸ�Ƶ�ʵ����������
�����֪���Լ���ɾ����һ�����дֵ��У���ô���ǽ���ʹ��VACUUM FULL�� �����ñ���ȶ�̬�ߴ������ΪVACUUM FULL���������Եķ�����������С�� �ճ��Ĵ��̿ռ�������ʹ�� VACUUM�������� VACUUM FULL��
�������һ�����������ݾ�������ȫɾ������ô���Կ����� TRUNCATE�������Ǻ������ VACUUM �� DELETE�� TRUNCATE ����ɾ������������ݣ� ����Ҫ������ VACUUM ����VACUUM FULL ���ָ�����û���õĴ��̿ռ䡣
PostgreSQL �IJ�ѯ�滮������һЩ�йر����ݵ�ͳ����Ϣ����Ϊ��ѯ���ɺõĹ滮�� ��Щͳ����ͨ��ANALYZE �����õģ������ֱ�ӵ���������� Ҳ���������� VACUUM ���һ����ѡ���������á� ӵ�к���ȷ��ͳ���Ƿdz���Ҫ�ģ�����ѡ���˶��ӵĹ滮�ܿ��ܽ������ݿ�����ܡ�
��Ϊ�˻��տռ�������һ������������ͳ����ϢҲ�ǶԸ���Ƶ���ı�����á� ��������ʹ�Ǹ��·dz�Ƶ���ı�����������ݵ�ͳ�Ʒֲ����������ı䣬��ôҲ����Ҫ����ͳ����Ϣ�� һ����Ĵָ���ɾ�����������ֶε�������Сֵ�ı�ķ��ȡ� ���磬һ�������и���ʱ��� timestamp �ֶν��������е��Ӻ����ȶ��������ֵ�ģ� �������ֶο�����Ҫ����Щ����������վ�� URL ���ֶθ�Ƶ��һЩ����ͳ����Ϣ�� ��Щ URL �ֶο��ܸı��һ��Ƶ������������ֵ��ͳ�Ʒֲ��ĸı����Ҫ�����öࡣ
���ǿ������ض��ı������DZ����ض����ֶ������� ANALYZE�� ����������Ӧ��������Ļ��������ǿ��Զ�ijЩ��Ϣ���µñ�������Ϣ��Ƶ���ġ� ��������ʵ���У�������������������ֵ�û��ɵġ� �� PostgreSQL 7.2 ��ʼ�� ANALYZE ��һ���൱��IJ�������ʱ�ڴ����Ҳ�ܿ죬 ��Ϊ��ʹ����ͳ��ѧ�ϵ���������ķ��������в����� �����ǰ�ÿһ�ж���ȡ��������ˣ�ÿ��һ��ʱ����������ݿ�����һ������������ܸ���
��ʾ: ������ ANALYZE ���ֶν����ھ�ķ�ʽ���ܲ��Ǻ�ʵ�ã� ������ܻ��ǻᷢ��ֵ�ð��ֶζ� ANALYZE �ռ���ͳ����Ϣ����ϸ������е����� ��Щ������WHERE�Ӿ���ʹ�õ��ֶ�����зdz�����������ݷֲ��� ��ô�Ϳ�����Ҫ�������ֶθ�ϸ�µ�����ͼ������ ALTER TABLE SET STATISTICS��
���ǶԴ�����ڵ㶼������ÿ��ĵ�ʹ��ʱ�ΰ���һ�����ݿⷶΧ�� ANALYZE�� ������������Ч�غ�ÿ��� VACUUM �����һ�� �����������Щ��ͳ����Ϣ�ı���Ի����Ľڵ���ܻ���ڿ��ţ� ������һЩ�� ANALYZE Ҳ�㹻�ˡ�
PostgreSQL �� MVCC �������������ڱȽ����� ID(XID)����ֵ�� һ�����д��ڵ�ǰ����� XID �IJ��� XID ���а汾��"����δ����"�� ���Ҳ�ӦΪ��ǰ����ɼ���������Ϊ���� ID �Ĵ�С���ޣ�������д��Щ��ʱ���� 32 λ�������һ�μ�Ⱥ������е�ʱ��ܳ������� 4 ǧ�״����� ��ô����Ҫ�ܵ����� ID �ص�����ĥ��XID �������ص���λ�� Ȼ��ͻȻ��������ǰ������ͱ�ɿ���ȥ���ڽ����� --- ����ζ�����ǵ��������ÿɼ��� �����֮�����µ����ݶ�ʧ����ʵ����������Ȼ������������������ȡ���ݣ���ô˵Ҳֻ�������ֻ�����
�� PostgreSQL 7.2 ֮ǰ�� ���� XID �ص���Ψһ�취��������ÿ4ǧ�������������һ��initdb�� ���������Ը������Ľڵ���Ե�Ȼ�������������������������������˸��õķ����� �µķ�������ij����������Ȼ��������״̬������Ҫ initdb �����κ����͵������� ���۾�������������ά��Ҫ�� ���ݿ��е�ÿ����������ÿʮ�ڴ���������������һ�� ��
��ʵ�ʽǶȳ��������Ҫ����һ���ܷ��ص�Ҫ�� ������Ϊ�������û���������Ҫ��ĺ����ȫ�����ݵĶ�ʧ�����������Ǵ��̿ռ���˷ѻ������ܵ��½����� ����������һЩ����Ķ������������ݿ����Ա�������ϴ�VACUUM ������ʱ�䡣����ʣ��IJ��ָ�����Щϸ�ڡ�
XID �Ƚϵ��·����������������� XID������ 1 �� 2 ��BootstrapXID �� FrozenXID���� ������ XID ���DZ���Ϊ���κ���ͨ�� XID �ɡ���ͨ�� XID����Щ���� 2 �ģ�ʹ��ģ-231������бȽϡ� �����ζ�Ŷ���ÿ����ͨ�� XID�������ж�ʮ�ڸ� XID ��"����"�Լ���ʮ�ڸ� XID"����"�� ��������˼������һ����������ͨ�� XID �ռ���û���յ�Ļ��� ��ˣ�һ��һ��Ԫ������ض�����ͨ XID ������������ô��Ԫ�� �����Ժ�Ķ�ʮ�ڴ������б��ֵ���"�ڹ�ȥ"������������˵�����ĸ���ͨ XID�� �����Ԫ���ڳ�����ʮ�ڴ�����֮����Ȼ���ڣ� ��ô���ͻ�ͻȻ����ڽ�����Ԫ�顣Ϊ�˱������ݶ�ʧ���ϵ�Ԫ������ڵ����ʮ�ڴ����������֮ǰ��ij��ʱ���� XID FrozenXID�� һ�������������������� XID����ô������������ͨ������ǰ����Ϊ "�ڹ�ȥ"������������ ID �Ƿ��ص��� ���������Ԫ��ֱ��ɾ��֮ǰ������ã�����Ҫ����ʱ�䣮��� XID �����¸�ֵ��VACUUM ���Ƶģ�
VACUUM �����������Ǹ��κ�����ͨ XID �г���ʮ�ڴ��ѹ�ȥ�����а汾���¸�ֵΪ FrozenXID�� ������Ա�����ԭ���IJ��� XID ֱ������ֵ�������˸���ȤΪֹ�� ��ʵ���ϣ�������а汾�������ڻ�û��"����"֮ǰ���������������ˣ��� ����������£��κα������� VACUUM ����֮������İ�ȫ�����ʮ�ڴ����� �����ȵ�ʱ���������ô���Ϳ��ܾͻ���һ�������ϵ��а汾�����¸�ֵʱ��ɱȶ�ʮ�ڴ�������ϣ� ������ص�����δ�� — Ҳ����˵����ʧȥ���ˡ�����Ȼ�����������ʮ�ڴ�����֮������³��֣���������Ҳ�����¡���
��Ϊ�����ԭ��������Ҫ�����Ե����� VACUUM�� ���Ժ������ĸ���ᵽʮ�ڴ�����û������������ǣ�Ϊ�˰�������Աȷ�����������Ҫ�� VACUUM ��ϵͳ��pg_database ��洢������ ID ͳ�ơ� ������һ�����ݿ�� pg_database ���е� datfrozenxid �ֶ����κ����ݿⷶΧ�� VACUUM ������Ҳ����û�������κα��VACUUM��֮�ᱻ���¡� ����ֶ���洢����ֵ�Ǹ� VACUUM ����ʹ�õĶ�����ֹ�� XID�� ϵͳ��֤�ڸ����ݿ������б������ֹ XID �ϵ���ͨ XID ���� FrozenXID ���档 ��������Ϣ��һ�������ķ�����ִ������IJ�ѯ
SELECT datname, age(datfrozenxid) FROM pg_database;
age �ֶ����ڲ�������ֹ XID ����ǰ����� XID ����Ŀ��
ʹ�������ֱ��Ķ�����ԣ���һ��������������ݿ���ԣ� age �ֶν���ʮ�ڴ���ʼ����age�����ʮ�ڴε�ʱ�� ���ݿ�����ٴ������Ա��������ʶ�ص���ɵ����⡣ ���ǽ���IJ���������ÿ���ʮ�ڴΣ�5�ڴΣ����� VACUUM һ�����ݿ⣬ �����Ϳ��Ա�֤�㹻�İ�ȫ�߽緶Χ��Ϊ�˰��������������� ������κ� pg_database ��¼��ʾ������15�ڴ������ age�� ��ôÿ�����ݿⷶΧ��VACUUM �����Զ�����һ�����棬���磺
play=# VACUUM; WARNING: Some databases have not been vacuumed in 1613770184 transactions. Better vacuum them within 533713463 transactions, or you may have a wraparound failure. VACUUM
���� FREEZE ѡ��� VACUUM ʹ���˸��Ķ�����ԣ� ����а汾�Ѿ��ϵñ����д������������õģ� ��ô�Ͷ����ᣮ�ر��������һ�����е����ݿ������� VACUUM FREEZE����ô�ͱ�֤�����ݿ����������а汾�������ᡣ ��ˣ�ֻҪ�����ݿ�û�������ı仯����ô���Ͳ���Ҫ�����������Ա������� ID �ص����⡣ ������ɱ� initdb ������ template0���ݿ⡣ ����ҲӦ������������������� pg_database�������� datallowconn = false�����ݿ���г�ʼ���� ��Ϊ���ǻ�û���κα����ķ��� VACUUM һ���������ӵ����ݿ⡣ ��ע�⣬VACUUM ��������Щpg_database ��¼���� datallowconn = false �������й�δ�������ݿ���Զ�������Ϣ�� �Ա������������Щ���ݿ����ٵľ�����Ϣ�� ��ˣ�ȷ�����������ݿ������������������Ρ�
Warning |
Ҫ��ȷ�����������ص������⣬ ���DZ�������ÿʮ�ڴ���������һ��ÿ�����ݿ��е�ÿ��������ϵͳ�� �����Ѿ��й���Ϊû�����������ݿⷶΧ�� vacuum �����ֻ�������û��Լ���Ծ���û�������µ����ݶ�ʧ�����ӡ� ֻ�����û����ݱ���ȥ���У���ֻ��һ��ʱ������ˡ� |