Paul J Stevens wrote:
I've landed an important change in the FETCH code that improves typical
FETCH commands by at least two orders of magnitude.

Typical FETCH commands after opening a mailbox will only retrieve data
that is fully cached by dbmail. This cache was - until now - not fully
being used by the fetch code. It was/is for SEARCH/SORT (which kicks
ass), but not for FETCH. This sore spot in dbmail's performance has now
been remedied.

I can open a mailbox containing 8000 messages in 5 seconds using
Thunderbird over a broadband line (400kbps). Expect the same in
Evolution, or any other MUA that will not require message parsing while
opening a mailbox.

Users of Outlook will not experience the same speedup, because Outlook
also wants the message envelope while opening a mailbox. This still
requires full parsing of each unseen message in the mailbox which
results in two queries hitting the backend per message.

This suggests that ENVELOPE and BODYSTRUCTURE should also be cached in a
near-future version of dbmail, just like the headers are now.

Anyway: please test this and let me know how it feels. I've tried my
best to avoid any leaks or segfaults, but there are still a couple of
tiny leaks in there.


I'm running dbmail from xinetd so the processes don't last that long, hence the tiny leaks probably aren't a problem.

I just upgraded to the latest SVN 2259, and yes I certainly see a speed-up when loading a mailbox that I haven't opened before. I don't think it's two orders of magnitude, but it is substantial, so thank you, that's great work. This was certainly one of my peeves with DBMail ( I have several mailboxes 10,000+ messages).

Thanks Paul!

Reply via email to