Как определить размер таблиц в БД 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)
Для получения размера таблиц в Мегабайтах, необходимо строку:
заменить на:Если список таблиц очень большой, то можно сократить вывод добавив условие в конструкцию WHERE
где, 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
Например, чтобы определить размер таблиц содержащих слово 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)
Опубликовано: 13.10.2018