On Mon, Apr 11, 2011 at 03:19:23PM -0700, Joel Stevenson wrote:
> I'm trying to do some comparisons between the EXTERNAL and the EXTENDED 
> storage methods on a bytea column and from the outside the setting doesn't 
> appear to affect the value stored on initial insert, but perhaps I'm looking 
> at the wrong numbers.  If I create two new tables with a single bytea column 
> and set one of them to external storage, then insert an existing bytea value 
> from another table into each one, they appear to be of exactly the same size. 
>  This is using PG 9.0.3 on Debian Lenny, using the backports-sloppy deb 
> package of PG 9.
> 
> (I've verified that the first table has "extended" storage via pg_attribute 
> and that the second table has external.)
> 
> create table obj1 ( object bytea );
> create table obj2 ( object bytea );
> alter table obj2 alter column object set storage external;
> insert into obj1 ( object ) select object from serialized_content where id = 
> 12345;
> insert into obj2 ( object ) select object from obj1;

If the value that shows up for insertion is already compressed, EXTERNAL storage
will not decompress it.  Change this line to

  insert into obj2 ( object ) select object || '' from obj1;

to observe the effect you seek.

Given the purpose of EXTERNAL storage, this might qualify as a bug.

> select pg_total_relation_size('obj1') as o1, pg_total_relation_size( (select 
> reltoastrelid from pg_class where relname = 'obj1' ) ) as otoast1, 
> pg_total_relation_size('obj2') as o2, pg_total_relation_size( (select 
> reltoastrelid from pg_class where relname = 'obj2' ) ) as otoast2;
>   o1   | otoast1 |  o2   | otoast2 
> -------+---------+-------+---------
>  65536 |   57344 | 65536 |   57344

> Can I use the relation size like this to determine whether or not compression 
> is happening for these toast columns?  If not, is there a way that I can 
> confirm that it is or isn't active?  The results appear to be similar for 
> text columns.

Yes; the sizes you're seeing through that method should be accurate.

nm

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to