Самый простой способ – это запрос INFORMATION_SCHEMA.
Например:
SELECT ENGINE, COUNT(*), SUM(DATA_LENGTH), SUM(INDEX_LENGTH) FROM information_schema.TABLES WHERE TABLE_SCHEMA='menagerie' GROUP BY ENGINE;
Кроме того, вот потенциально более быстрый пример для оценки размера БД (только для InnoDB и если вы не используете сжатые таблицы), поскольку он не использует INFORMATION_SCHEMA.TABLES:
select sum( CLUST_INDEX_SIZE + OTHER_INDEX_SIZE)* @@innodb_page_size / 1024 / 1024 "Estimated size in Mb" from information_schema.INNODB_SYS_TABLESTATS where name like 'test/%'; +----------------------+ | Estimated size in Mb | +----------------------+ | 541.92187500 | +----------------------+ 1 row in set (0.00 sec)