I have completed a set of persistence optimizations in JBoss Messaging, these include:
JBMESSAGING-239 - Payload of a message is serialized into a byte[] as soon as possible and passed around like this in the server. This avoids multiple unnecessary serialization hits.
JBMESSAGING-238, JBMESSAGING-230, JBMESSAGING-231 - These all involve tweaking and optimizing database types.
JBMESSAGING-240 - Disabled db referencing counting until 1.2
JBMESSAGING-236 - Bulking of db updates. This is more interesting. Now all db updates for a transaction prepare, rollback or commit are excuted in a single JDBC transaction.
Also all db operations for a single non transactional send/ack are also executed in a single JDBC tx.
Moreover, if the db supports JDBC batch updates these are further combined in a single batch update.
Haven't done any perf tests on it yet, but I suspect this should give real perf improvements for persistent messages.