There are a couple of things you can do that should help.
Firstly try reducing the amount of audit trail you keep. This is nearly always by far the biggest table, and you are probably keeping far more data than you need. You should find the setting for this in the system configuration page.
Secondly force the database maintenance function to run. This is also in the system configuration page.
I use MySQL OPTIMIZE in CRON Jobs to tidy up tables on our servers
Is this the same thing the DB_Maintenance function is doing?
Sorry for being a bit lazy... I just answered my own question by looking at the code but good to know...