guessing unused junk space in table. (innodb mysql/mariadb )
After digging the question, I went with a SELECT like this one:

SELECT table_name from information_schema.tables WHERE table_schema = 'mydb' AND DATA_FREE &gt; 0 ORDER by DATA_FREE DESC;


So I have a list of table to process.

a scripted form would be :

#! /bin/bash
[ -z "$1" ] &amp;&amp; echo usage "$0 [database_name]"
[ -z "$1" ] &amp;&amp; exit 1
for T in $(mysql -ss -e "SELECT table_name from information_schema.tables WHERE table_schema = \"$1\" AND DATA_FREE &gt; 0 ORDER by DATA_FREE DESC;");do echo \"$T\";time mysql -e "SET sql_log_bin=0;alter table $1.$T ENGINE=InnoDB";done 2&gt;&amp;1