Обсуждение: Toasting more system-table columns
I find the following varlena (ie, potentially toastable) columns present in the system tables: relname | attname | typname | attstorage ----------------+--------------+----------+------------pg_aggregate | agginitval | text | xpg_attrdef | adbin | text | ppg_attrdef | adsrc | text | ppg_class | relacl | _aclitem | mpg_database | datpath | text | ppg_description | description | text | xpg_group | grolist | _int4 | ppg_index | indpred | text | xpg_language | lancompiler | text | xpg_proc | probin | bytea | ppg_proc | prosrc | text | ppg_relcheck | rcbin | text | ppg_relcheck | rcsrc | text | ppg_rewrite | ev_action | text | xpg_rewrite | ev_qual | text | xpg_shadow | passwd | text | ppg_statistic | stacommonval | text | xpg_statistic | stahival | text | xpg_statistic | staloval | text | xpg_trigger | tgargs | bytea | ppg_type | typdefault | text | p Of these tables, only pg_rewrite has a toast table so far. Offhand it would seem to be a good idea to create toast tables for pg_attrdef, pg_description, pg_proc, pg_relcheck, possibly pg_statistic. Certainly a toast table for pg_proc is a must so that we can deal with large procedure bodies. Toasting pg_attrdef would allow very large column default expressions (dubious value), pg_description for long comments (probably should have this), pg_relcheck for long constraint expressions (probably want this), pg_statistic to cope with long min/max/common values (not sure about this). I doubt the other system tables need toast tables, although we may as well mark all of these attributes "m", ie, they should be compressible in-line even if there is no toast table. Comments? regards, tom lane
Tom Lane wrote: > Offhand it would seem to be a good idea to create toast tables for > pg_attrdef, pg_description, pg_proc, pg_relcheck, possibly pg_statistic. > Certainly a toast table for pg_proc is a must so that we can deal with > large procedure bodies. Toasting pg_attrdef would allow very large > column default expressions (dubious value), pg_description for long > comments (probably should have this), pg_relcheck for long constraint > expressions (probably want this), pg_statistic to cope with long > min/max/common values (not sure about this). I would think pg_statistic would be a 'must'. -- Mark Hollomon mhh@nortelnetworks.com ESN 451-9008 (302)454-9008
"Mark Hollomon" <mhh@nortelnetworks.com> writes: > Tom Lane wrote: >> pg_statistic to cope with long >> min/max/common values (not sure about this). > I would think pg_statistic would be a 'must'. Well, it's not a "must" because the code copes fine now (there's a test in there that simply drops pg_statistic tuples that won't fit). Question is whether we need good selectivity estimation on columns where the min/max/common values exceed 8K total (when represented in text form). Or for that matter whether the estimates we derive from such values are really useful ... regards, tom lane
Tom Lane wrote: > > "Mark Hollomon" <mhh@nortelnetworks.com> writes: > > Tom Lane wrote: > >> pg_statistic to cope with long > >> min/max/common values (not sure about this). > > > I would think pg_statistic would be a 'must'. > > Well, it's not a "must" because the code copes fine now (there's a test > in there that simply drops pg_statistic tuples that won't fit). Oh, well of course. Even pre-toast len(min)+len(max)+len(common) > 8K was possible. -- Mark Hollomon mhh@nortelnetworks.com ESN 451-9008 (302)454-9008