svn commit 1502206 contains the improvement related to XID column. The column was blob and not indexed, and most of the queries for non-xa case uses "AND XID IS NULL" in the queries, which kills the performance on large tables.
The change was introduced to treat XID as String, and put it into indexed varchar column.
In my tests it made the broker work properly with close to 2 million messages.
The testing scenario:
- Download the latest snapshot with the fix (or build locally)
- I introduced a bit optimized configuration that turns off every non-essential feature, like expiry processing, database cleanup and priority messages. So start a broker with
bin/activemq console xbean:conf/activemq-jdbc-performance.xml
- Send large number of messages with
Note that I added batch to work with producer tool, so we can send faster
- Restart the broker to check broker startup time
- Consumer messages with something like
I tested with local MySQL and it seems to work fine. It'd be good if people could test it with other RDBMS they use (Oracle, Postgres, etc.), to check if there's any other bottlenecks.