我怎样才能知道Postgres中一个大的TEXT字段有多大?

bri*_*all 7 xml sql compression postgresql zip

我在Postgres的TEXT字段中存储了一些大型XML文档,我试图找出TOAST如何有效地压缩它们.我有一个2.2mb的XML文档,可以压缩到51kb,所以我想了解TOAST的压缩率与它的匹配程度,以便最终决定如何随着时间的推移归档这些文档.

Postgres中是否有一个函数可以让我识别特定列和行的TOAST压缩大小?

Cra*_*ger 7

你想要pg_column_sizeTOASTed尺寸,大小octet_length适合.pg_column_size文档系统管理功能部分中.有关更多详细信息,请参阅文档和此问题.

例:

craig=> CREATE TABLE toastdemo(x text);
CREATE TABLE
craig=> insert into toastdemo(x) select * from  repeat('abcdef',1000);
INSERT 0 1
craig=> select pg_column_size(x), pg_column_size(repeat('abcdef',1000)) FROM toastdemo;
 pg_column_size | pg_column_size 
----------------+----------------
             84 |           6004
(1 row)
Run Code Online (Sandbox Code Playgroud)