The only case in which you recover automatically the disk space is with
MyISAM tables,
In case of other storage engines is depending on the specific engine.
And the only guaranteed way to have new optimized tables is *full* dump and
reload.
Rolando link is good.
Cheers
Claudio
2011/2/11 Rolando
Do you have innodb_file_per_table turned on ???
If this is off, then all your InnoDB data is going in /var/lib/mysql/ibdata1
You actually need to the following to recover all free space from all InnoDB
tables
I commented on this in
http://stackoverflow.com/questions/3927690/howto-clean-a-mysql