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

Для определения размера таблиц в базе данных из командной строки, размещенной на сервере MySQL или MariaDB требуется 2 действия: 1. Подключиться к серверу баз данных, командой: mysql -u root -p (или просто mysql, если локально не требуется аутентификация) 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” - имя базы данных, для которой необходимо получить список таблиц с размерами

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

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

Результат выполнения SQL запроса будет примерно такой:

+---------------------------+------------+
| Table                     | Size in KB |
+---------------------------+------------+
| columns_priv              |       4.00 |
| db                        |      13.94 |
| event                     |       2.00 |
| func                      |       1.00 |
| general_log               |       0.00 |
| help_category             |       4.07 |
| help_keyword              |     105.27 |
| help_relation             |      28.04 |
| help_topic                |     459.83 |
| host                      |       2.00 |
| ndb_binlog_index          |       1.00 |
| plugin                    |       1.00 |
| proc                      |       2.00 |
| procs_priv                |       4.00 |
| proxies_priv              |      12.48 |
| servers                   |       1.00 |
| slow_log                  |       0.00 |
| tables_priv               |       4.00 |
| time_zone                 |       1.00 |
| time_zone_leap_second     |       1.00 |
| time_zone_name            |       1.00 |
| time_zone_transition      |       1.00 |
| time_zone_transition_type |       1.00 |
| user                      |       5.11 |
+---------------------------+------------+
24 rows in set (0.00 sec)

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

round(((data_length + index_length) / 1024 ), 2) `Size in KB`
заменить на:

round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`

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

WHERE table_schema = "DBName"
AND table_name = "TableName";
где, TableName - имя таблицы, для который необходимо получить размер

Например, чтобы определить размер таблицы help_topic в базе данных mysql, необходимо будет выполнить SQL запрос:

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

Результат:

+------------+------------+
| Table      | Size in KB |
+------------+------------+
| help_topic |     459.83 |
+------------+------------+
1 row in set (0.00 sec)

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

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

Например, чтобы определить размер таблиц содержащих слово zone в названии таблицы в базе данных mysql, необходимо будет выполнить SQL запрос:

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

Результат:

+---------------------------+------------+
| Table                     | Size in KB |
+---------------------------+------------+
| time_zone                 |       1.00 |
| time_zone_leap_second     |       1.00 |
| time_zone_name            |       1.00 |
| time_zone_transition      |       1.00 |
| time_zone_transition_type |       1.00 |
+---------------------------+------------+
5 rows in set (0.00 sec)

userman.ru

Опубликовано: 13.10.2018