Как определить размер таблиц в БД MySQL

В повседневной работе для работы с MySQL пользуюсь бесплатной программой dbeaver. В ней есть отличная функция узнать полный вест таблиц.  Проблема в том, перед тем как показать вес таблиц программа делает запрос ко всему содержимому базы данных. Если таблиц в БД более сотни, и размеры более 10 гигибайт, оперативно узнать сколько вести одна таблица достаточно сложно.

В статье раскажу как можно через запросы узнать детали по таблицам в базе данныи и отдельно по одной таблице.

Для определения размера таблиц в базе данных из командной строки, размещенной на сервере MySQL или MariaDB требуется 2 действия:
1. Подключиться к серверу баз данных любым удобным способом (через CONSOLE или GUI)
2. Выполнить SQL запрос:

SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024), 2) `Size in KB`
FROM information_schema.TABLES
WHERE table_schema = "DBName";

где, DBName — имя базы данных, для которой необходимо получить список таблиц с размерами

3. Чтобы определить список и размер таблиц (в килобайтах) базы данных mysql, необходимо будет выполнить запрос:

SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 ), 2) `Size in KB`
FROM information_schema.TABLES
WHERE table_schema = "DBName";

Для получения размера таблиц в мегабайтах, необходимо строку:

SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "DBName";

Если список таблиц очень большой, то можно сократить вывод добавив условие в конструкцию WHERE

WHERE table_schema = "DBName"
AND table_name = "TableName";

где, DBName — имя базы данных; TableName  — имя таблицы, для который необходимо получить размер

SQL запрос для вывода деталей по одной таблице:

SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 ), 2) `Size in KB`
FROM information_schema.TABLES
WHERE table_schema = "DBName"
AND table_name = "TableName";

Если необходимо получить ограниченных список таблиц, например, содержащих определенные слова в названии, то можно сократить вывод добавив условие (Like «FilterTableName») в конструкцию WHERE

WHERE table_schema = "DBName"
AND table_name Like "FilterTableName";

Например

SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 ), 2) `Size in KB`
FROM information_schema.TABLES
WHERE table_schema = "DBName"
AND table_name Like "%TableName%";