(innodbを使用している場合でも)innodb_file_per_table を設定している場合、
du -sh /path/to/data/* などとすればさくっと取れる。
データベースごとのサイズ
SELECT table_schema , SUM(data_length+index_length) / 1024 / 1024 as MB FROM information_schema.tables GROUP BY table_schema ORDER BY SUM(data_length+index_length) DESC
テーブルごとのサイズ
use database_name; select table_name, engine, table_rows as tbl_rows, avg_row_length as rlen, floor((data_length+index_length)/1024/1024) as allMB, floor((data_length)/1024/1024) as dMB, floor((index_length)/1024/1024) as iMB from information_schema.tables where table_schema=database() order by (data_length+index_length) desc;