Как узнать размеры все баз данных в Mysql? sql-запросом, найти MAX…

Полезный и простой sql-запрос чтобы узнать размеры таблиц в Mysql в базе данных …

SELECT
concat(table_schema,'.',table_name),
concat(round(table_rows/1000000,2),'M') rows,
concat(round(data_length/(1024*1024),2),'M') DATA,
concat(round(index_length/(1024*1024),2),'M') idx,
concat(round((data_length+index_length)/(1024*1024),2),'M') total_size,round(index_length/data_length,2) idxfrac
FROM information_schema.TABLES ORDER BY data_length+index_length DESC LIMIT 10

После исполнения получаем что-то типа:
+————————————-+———+———+———+————+———+
| concat(table_schema,’.’,table_name) | rows | DATA | idx | total_size | idxfrac |
+————————————-+———+———+———+————+———+

concat(table_schema,’.’,table_name) rows DATA idx total_size idxfrac
zismo2.ibf_posts 1.69M 649.20M 796.41M 1445.62M 1.23
zismo.ibf_posts 1.42M 555.55M 712.41M 1267.95M 1.28
ucoz2dleparser.skinswot_parse 0.00M 203.35M 0.08M 203.43M 0.00
stalkerbook.ibf_posts 0.12M 155.14M 18.29M 173.43M 0.12

Только в примере sql-запрос я убрал умножение лишний раз на 1024 и размеры таблиц выводятся в мегабайтах (в примере выполнения размеры даны в гигабайтах).
Как видим, таким несложным sql запросом можно узнать какие таблицы в mysql занимают больше всего места и на оптимизации каких их них стоит сосредоточиться.

или вот так вот
SELECT table_schema "database_name", SUM( data_length + index_length ) /1024 /1024 "Database size in MB"
FROM information_schema.TABLES
GROUP BY table_schema
ORDER BY `Database size in MB` DESC

результат

database_name Database size in MB
alenaleonova 14.46034527
aniboom 42.23315048
balalar 8.52629471
booksdownloads 13.17896652

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>