README.fixchar

text/plain

Filename: README.fixchar
Type: text/plain
Part: 3
Message: Re: Large databases, performance
fixchar
=======

User data types char3, char4 and char10 as space saving replacements
for char(3), char(4), and char(10) respectively.

This is an experimental implementation for Shridhar's high volume
performance tests.  It is not expected to be usable in any real world
application.  Known problems are at least:

  . There are no casting functions
  . This does not work with multibyte character sets

Use at your own risk!


I N S T A L L
=============

. Put these files into contrib/fixchar
. cd to contrib/fixchar
. make
. make install
. cd to the directory where PG is installed
. bin/psql yourdb
yourdb=# \i share/postgresql/contrib/fixchar.sql


T E S T
=======

CREATE TABLE short (
	i INT,
	c3 char3,
	c4 char4,
	c10 char10,
	primary key (i, c3)
);
CREATE TABLE long (
	i INT,
	c3 char(3),
	c4 char(4),
	c10 char(10),
	primary key (i, c3)
);
INSERT INTO short VALUES (1, 'aaa', 'aaaa', 'a');
INSERT INTO long VALUES (1, 'aaa', 'aaaa', 'a');
INSERT INTO short SELECT i+1, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+1, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+2, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+2, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+4, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+4, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+8, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+8, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+16, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+16, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+32, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+32, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+64, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+64, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+128, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+128, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+256, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+256, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+512, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+512, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+1024, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+1024, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+2048, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+2048, c3, c4, c10 FROM long;
INSERT INTO short SELECT i+4096, c3, c4, c10 FROM short;
INSERT INTO long SELECT i+4096, c3, c4, c10 FROM long;
VACUUM VERBOSE ANALYZE short;
VACUUM VERBOSE ANALYZE long;
SELECT relname,reltuples,relpages FROM pg_class WHERE relname NOT LIKE 'pg%';
  relname   | reltuples | relpages
------------+-----------+----------
 short_pkey |      8192 |       33
 short      |      8192 |       57
 long_pkey  |      8192 |       39
 long       |      8192 |       69
(4 rows)

(2002-10-08  mk)