Зачастую при ревизии базы данных проекта, особенно когда количество таблиц в БД постоянно меняется (появляются новые, удаляются ненужные, временно оставляются таблицы со старыми данными) у администратора возникает вопрос, какие из них можно удалить, а какие можно почистить от устаревшей даты
Две несложные процедуры помогут команде проекта определиться и принять верное решение
Процедуры создаем в базе my_db
Размер таблиц. Процедура table_size
В консоли mysql/mariadb нет возможности узнать размер таблиц конкретной базы. В phpmyadmin (ПМА) дает суммарный размер по-таблично, но этого мало. Нужно знать размер индекса и даты
В консоли, либо в интрефейсе ПМА создаем процедуру
DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `my_db`.`table_size`() BEGIN SELECT table_name AS "Table", ROUND((data_length / 1024 / 1024 / 1024 ), 2) AS "Data (GB)", ROUND((index_length / 1024 / 1024 / 1024 ), 2) AS "Index (GB)", ROUND(((data_length + index_length) / 1024 / 1024 / 1024 ), 2) AS "Total (GB)" FROM information_schema.TABLES WHERE table_schema = "my_db" ORDER BY (data_length + index_length) DESC LIMIT 5; END $$ DELIMITER ;
Вызов из консоли mysql
CALL table_size;
И вот результат

Размер даты, индекса и общий размер каждой таблицы
Время создания и последнего апдейта таблиц. Процедура table_mtime
Еще одна процедура для определения времён
DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `my_db`.`table_mtime`() BEGIN SELECT table_name, create_time, update_time FROM information_schema.tables WHERE TABLE_SCHEMA = 'my_db' ORDER BY update_time DESC; END $$ DELIMITER ;
Вызываем
CALL table_mtime;

Время создания и время последнего изменения таблицы
Может быть есть что-то лишнее?
Все

Системный администратор с 2000 года
Участник Freelancehunt, Хабр Q&A
Кейсы