Re: Efficient use of space in large table? - Mailing list pgsql-general
From | Manfred Koizar |
---|---|
Subject | Re: Efficient use of space in large table? |
Date | |
Msg-id | 535biug0vv0v2olbhpt46nr8281ktqijtq@4ax.com Whole thread Raw |
In response to | Efficient use of space in large table? (Josh Jore <josh@greentechnologist.org>) |
Responses |
Re: Efficient use of space in large table?
Re: Efficient use of space in large table? |
List | pgsql-general |
On Thu, 4 Jul 2002 21:43:10 -0500 (CDT), Josh Jore <josh@greentechnologist.org> wrote: >I was just wondering - I've got two large tables and I was wondering >if there is anyway to shrink them somewhat. I imagined compression for >non-indexed columns or something. Is varchar or char more efficient than >text? > Josh, first of all, text is ok. You might want to store NULL instead of '' to squeeze out a few bytes here and there. Now I have even more questions instead of answers :-) PG version? OS? Do you have lots of UPDATEs/DELETEs? Do you ANALYZE regularly? Please show us the outputs of VACUUM VERBOSE sospeople; VACUUM VERBOSE votes; > >A size summary > relname | size | type | reltuples >------------------------+-------+---------- +---------- > sospeople | 599MB | table | 2M > sospeople_fn | 71MB | index | 2M > sospeople_ln | 73MB | index | 2M > sospeople_zip | 73MB | index | 2M > votes | 937MB | table | 15M Could you show us the tuple counts in your relations, just like the wild guess I have inserted? > > > Table "sospeople" > Attribute | Type | Modifier >------------------+---------+--------------------- > sosid | text | not null default '' > countyname | text | not null > firstname | text | > middlename | text | > lastname | text | > suffix | text | > homephone | text | > registrationdate | text | > birthyear | integer | > status | text | > precinctcode | text | > housenumber | text | > streetname | text | > unittype | text | > unit | text | > address2 | text | > city | text | > state | text | > zipcode | text | What are the average sizes of these text columns? If there are long repeated values (e.g. countyname), it might help do pull these out into a separate table CREATE TABLE county (id serial, name text); and replace > countyname | text | not null by county_id NOT NULL REFERENCES county >Indices: sospeople_fn, > sospeople_ln, > sospeople_zip > Also post the results of \d sospeople_fn \d sospeople_ln \d sospeople_zip > Table "votes" > Attribute | Type | Modifier >------------+---------------+---------- > sosid | character(10) | > electionid | integer | > votetype | character(1) | No index here? Using sosno INT instead of sosid CHAR(10) could save you (vaguely estimated) up to 10% of space for this table. OTOH you would have to insert sosno into sospeople, so this would only be a win, if votes has far more rows than sospeople. >I'm sort of just grasping at straws for something to get the data >smaller. Is your problem really related to space, or to speed? Servus Manfred
pgsql-general by date: