49.2. TOAST

�����ṩ��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��ԣ�

ÿ������ TOAST ���������Ͷ�Ϊ���������͵��ֶ�����һ��ȱʡ���ԣ� �����ض�����ֶεĴ洢���Կ����� ALTER TABLE SET STORAGE �޸ġ�

�����������Щ��ֱ�ӵķ�����������������ֱֵ�ӿ�Խ���ҳ�棬�и����ŵ㡣 �����ѯͨ��������ԱȽ϶̵ļ�ֵ����ƥ��ģ���ô�����ִ�����Ĺ�������ʹ�����м�¼��ɡ� TOAST �������ԵĴ����ֵֻ���ڰѽ�������͸��ͻ��˵�ʱ��ų���������ѡ�������Ļ����� ��ˣ�����ҪС�ö࣬�������Ĵ󲿷��ж��洢�ڹ�������������˾Ϳ��Բ���Ҫ�κ�����洢�� ����Ҳ��С�ˣ��������򽫸�������ڴ�����ɡ�һ��С���Ա�����һ�����͵ı��� HTML ҳ���Լ����ǵ� URL �ı��ڰ��� TOAST �������ڴ洢����һ���С�������ݣ� ������ֻ����ȫ�����ݵ� 10%��URL��һЩС�� HTML ҳ�棩�� ����һ���� TOAST �İ��±�����洢����ȫ�� HTML ҳ��ü��� 7Kb ��ƥ��ҳ���С����û���κ�����ʱ������