Как определить размер таблиц в БД 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%";