PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 49. ���ݿ�����洢 | Fast Forward | Next |
�����ṩ��TOAST����һ�����������ߴ��ֶδ洢���ɣ�The Oversized-Attribute Storage Technique����
��Ϊ��PostgreSQL����ҳ���С�ǹ̶��ģ�ͨ����8Kb���� ���Ҳ�����Զ���Խ���ҳ�棬��˲�����ֱ�Ӵ洢�dz�����ֶ�ֵ�� �ڡ�PostgreSQL 7.1��֮ǰ����������һ��Ӳ���ƣ� ������һ������һ�������д洢�����ݵ��ܴ�СΪ�պ���С��һ��ҳ�档 �Ӱ汾 7.1 �Լ��Ժ�İ汾��ʼ��������Ʊ��˷��ˣ��������������ֶ�ֵ��ѹ����/�����ɶ�������С� ��Щ������û��������ģ�ֻ���ں�˴�������һЩС��Ӱ�졣 ��������İ�����TOAST������"��Ƭ���֮�����õĶ���"����
ֻ��һ������������֧�� TOAST — ����û��Ҫ����Щ���������ɴ���ֶ�ֵ����������ǿ�����ֹ��ȡ� Ҫ֧�֡�TOAST���������ͱ����б䳤��varlena���ı�����ʽ�� ���ʱ���κδ洢����ֵ��ͷ 32 λ���Ǵ洢�����ֽڼǵ���ֵ���ܳ��ȣ��������ȱ����� TOAST������Լ��ʣ�µı�����ʽ������֧�ֿ��ԡ�TOAST������������֮��C������ĺ�����������ϸ���� TOAST��������ֵ����ͨ�����ڶ�һ������ֵ���κ�����֮ǰ������PG_DETOAST_DATUM�� ������ijЩ����£�����Ч�ķ���Ҳ�Ǵ��ڵġ���
TOAST��ʹ�ñ䳤�ij����ֵ��������������λ�� �����Ͱ��κο���TOAST���������͵�������������1Gb��230 - 1 �ֽڣ��� �������λ�����㣬��ô��ֵ�Ǹ���������һ����ͨ��δTOAST����ֵ�� �������һ��λ����һ����ô��ʾ����ֵ��ѹ������ʹ��ǰ�����Ƚ�ѹ�����������������һ��λ�� ���ʾ����ֵ��������洢�ġ����ʱ��ֵʣ�µIJ���ֻ��һ��ָ�룬 ����ȷ����ֵ�����������ط����ҡ��������λ���������ˣ� ��ô�����������Ҳ��ѹ�����ˡ����������������������ʣ�µĵ�λ����ʾ���ݵ�ʵ�ʳߴ磬 �����ǽ�ѹ�����ߴ���������ץ����֮������ߴ硣
���һ���������κ�һ���ֶ��ǿ���TOAST�ģ� ��ô�ñ���һ��������TOAST���� OID �洢�ڱ��pg_class.reltoastrelid ��¼��������TOAST������ֵ������TOAST��������и���ϸ��������
����ʹ�õ�ѹ�������Ƿdz����ҷdz����ٵ� LZ ��ѹ�����ɡ� ���� src/backend/utils/adt/pg_lzcompress.c ��ȡϸ�ڡ�
�������ݱ����ѳɣ����ѹ��������ѹ��֮�����TOAST_MAX_CHUNK_SIZE �������ֵ��С��BLCKSZ/4������ȱʡ 2000 �ֽڣ��ֽڵĿ飬 ÿ���鶼��Ϊ����������TOAST����Ϊ������洢�� ÿ��TOAST�����ֶ�chunk_id��һ����ʾ�ض���TOAST��֮���ݵġ�OID���� chunk_seq��һ�����кţ��洢�ÿ�����ֵ�е�λ�ã�����һ��chunk_data ���ÿ�ʵ�ʵ����ݣ�����chunk_id��chunk_seq����һ��Ψһ������ �ṩ����ֵ�Ŀ��ټ�������ˣ�һ����ʾ����TOAST������ֵ��ָ��������Ҫ�洢Ҫ���ĵ�TOAST��OID ���ض���ֵ��OID������chunk_id����Ϊ�˷��㣬 ָ�����ݻ��洢�����ݵijߴ磨ԭʼ��δѹ�������ݳ��ȣ��Լ�ʵ�ʴ洢�ijߴ磨���ʹ����ѹ���������߲�ͬ���� ����ͷ���ij����֣�һ��TOASTָ�����ݵ��ܳߴ���20�ֽڣ��������������ֵ��ʵ�ʳ����Ƕ��
TOAST ����ֻ��������ij���д洢����BLCKSZ/4�ֽڣ�ͨ����2Kb�����е�ʱ��Żᴥ���� TOAST ���뽫ѹ����/������洢�ֶ�ֵ��ֱ����ֵ��BLCKSZ/4�ֽڶ̣��������õ����õĽ����ʱ���ֹͣ�� ��һ�� UPDATE ���������У�δ�ı���ֶε���ֵͨ��ԭ�����棻 ���ԣ���� UPDATE һ�������������ݵ���ʱ��������������ֵû�б仯����ô��������TOAST�������ڡ�
TOAST����ʶ�����ֲ�ͬ�Ĵ洢��TOAST�ֶεIJ��ԣ�
PLAIN����ѹ����������洢�� ��ֻ�Ƕ���Щ����TOAST���������Ͳ��п��ܡ�
EXTENDED����ѹ��������洢�� ���Ǵ��������TOAST���������͵�ȱʡ�� ���Ƚ���ͼ����ѹ�����������Ȼ̫����ô���������洢��
EXTERNAL ��������洢�����Dz���ѹ���� ʹ�� EXTERNAL ������Щ�� text �� bytea �ֶ��ϵ����ִ��������죨�����������˴洢�ռ䣩�� �����Щ�����Ǿ����Ż��ģ������������û��ѹ������ô����ֻ��ȥץȡ��Ҫ�IJ��֡�
MAIN ����ѹ����������������洢�� ��ʵ���ϣ����������ֶ�����Ȼ���������洢����ֻ����Ϊû�а취�������б�ø�С������µ������ֶΡ���
ÿ������ TOAST ���������Ͷ�Ϊ���������͵��ֶ�����һ��ȱʡ���ԣ� �����ض�����ֶεĴ洢���Կ����� ALTER TABLE SET STORAGE �ġ�
�����������Щ��ֱ�ӵķ�����������������ֱֵ�ӿ�Խ���ҳ�棬�и����ŵ㡣 �����ѯͨ��������ԱȽ϶̵ļ�ֵ����ƥ��ģ���ô�����ִ�����Ĺ�������ʹ�����м�¼��ɡ� TOAST �������ԵĴ����ֵֻ���ڰѽ���������ͻ��˵�ʱ��ų���������ѡ�������Ļ����� ��ˣ�����ҪС�ö࣬�������Ĵ��ж��洢�ڹ�������������˾Ϳ��Բ���Ҫ�κ�����洢�� ����Ҳ��С�ˣ���������������ڴ�����ɡ�һ��С���Ա�����һ�����͵ı��� HTML ҳ���Լ����ǵ� URL �ı��ڰ��� TOAST �������ڴ洢����һ���С�������ݣ� ������ֻ����ȫ�����ݵ� 10%��URL��һЩС�� HTML ҳ�棩�� ����һ���� TOAST �İ��±�����洢����ȫ�� HTML ҳ��ü��� 7Kb ��ƥ��ҳ���С����û���κ�����ʱ������