>>>>> "Vladimir" == Vladimir Likhachev <[EMAIL PROTECTED]> writes:

Vladimir> Maybe, indexes use a lot of space in dbmail_headervalue?

Vladimir> Will You try to select (tablesizes+toastsizes) and
Vladimir> (indexsizes+toastindexsizes) in 2 distinct querys and
Vladimir> publish results?

Here is what I get from his select, modified as above, and saved as a
view, on a db with 545754 rows in physmessage:

dbmail=# select * from usage;
 nspname |          relname          | totalsize  | noindexsize | indexsize  
---------+---------------------------+------------+-------------+------------
 public  | dbmail_headervalue        | 4694 MB    | 2619 MB     | 2076 MB
 public  | dbmail_messageblks        | 2732 MB    | 2651 MB     | 81 MB
 public  | dbmail_envelope           | 275 MB     | 253 MB      | 22 MB
 public  | dbmail_referencesfield    | 222 MB     | 79 MB       | 142 MB
 public  | dbmail_messages           | 208 MB     | 83 MB       | 125 MB
 public  | dbmail_tofield            | 120 MB     | 50 MB       | 70 MB
 public  | dbmail_fromfield          | 109 MB     | 46 MB       | 64 MB
 public  | dbmail_subjectfield       | 107 MB     | 48 MB       | 59 MB
 public  | dbmail_replytofield       | 62 MB      | 26 MB       | 36 MB
 public  | dbmail_datefield          | 61 MB      | 26 MB       | 34 MB
 public  | dbmail_ccfield            | 44 MB      | 18 MB       | 26 MB
 public  | dbmail_physmessage        | 44 MB      | 34 MB       | 10032 kB
 public  | dbmail_mailboxes          | 21 MB      | 18 MB       | 3728 kB
 public  | dbmail_headername         | 1928 kB    | 704 kB      | 1224 kB
 public  | dbmail_users              | 976 kB     | 656 kB      | 320 kB
 public  | dbmail_subscription       | 736 kB     | 464 kB      | 272 kB
 public  | dbmail_aliases            | 56 kB      | 8192 bytes  | 48 kB
 public  | dbmail_sievescripts       | 32 kB      | 0 bytes     | 32 kB
 public  | dbmail_pbsp               | 24 kB      | 0 bytes     | 24 kB
 public  | dbmail_replycache         | 24 kB      | 8192 bytes  | 16 kB
 public  | dbmail_auto_replies       | 16 kB      | 0 bytes     | 16 kB
 public  | dbmail_usermap            | 8192 bytes | 0 bytes     | 8192 bytes
 public  | dbmail_acl                | 8192 bytes | 0 bytes     | 8192 bytes
 public  | dbmail_auto_notifications | 8192 bytes | 0 bytes     | 8192 bytes
(24 rows)

As you can see, the indices for headervalue are almost as large as the data.
And I only use these indices:

    "dbmail_headervalue_pkey" PRIMARY KEY, btree (id)
    "dbmail_headervalue_1" UNIQUE, btree (physmessage_id, id)
    "dbmail_headervalue_2" btree (physmessage_id)
    "dbmail_headervalue_4" btree (headername_id)
    "dbmail_headervalue_5" btree (physmessage_id, headername_id)

Having the dbmail_headervalue_3 ON 
dbmail_headervalue(substring(headervalue,0,255))
index would about double the indexsize.

As discussed earlier, limiting the list of headers saved in headervalue
would have a significant and beneficial impact on performance.

-JimC
-- 
James Cloos <[EMAIL PROTECTED]>         OpenPGP: 1024D/ED7DAEA6
_______________________________________________
DBmail mailing list
[email protected]
https://mailman.fastxs.nl/mailman/listinfo/dbmail

Reply via email to