Hi

I'm trying to migrate a database from MySQL to postgres and I'm struggling
with the amount of diskspace the resulting db takes.

I may be missing a setting somewhere but I can't see one anywhere obvious
(apologies if I'm being stupid...)

Even postgres' idea of the size of the columns don't match up to its own
reported size of the data.

eg I have a table "result":

CREATE TABLE result (
    st_id integer NOT NULL,
    log smallint NOT NULL,
    "time" integer NOT NULL,
    token character(4) NOT NULL,
    data character varying(500) DEFAULT NULL::character varying
);

# SELECT pg_size_pretty(sum(pg_column_size(data) + pg_column_size(st_id) +
pg_column_size(log) + pg_column_size(token) + pg_column_size(time))) FROM
result;
 pg_size_pretty
----------------
 178 MB
(1 row)

# SELECT pg_size_pretty(pg_relation_size('result'));
 pg_size_pretty
----------------
 613 MB
(1 row)

I'd naively expected these two figures to be similar.

I've run vacuum analyze and it made no difference (not a major surprise
because all I've done so far is create the database and sequentially insert
the data into the tables).

I expected a little overhead from what I'd read before the migration but
that's a fairly huge difference.

As I said, sorry if I've missed the obvious "use loads of extra space"
setting but I'd appreciate any suggestion as to what that setting might be
called :)

Cheers

Geoff

Reply via email to