Mysql. Как узнать размер, время создания и последнего апдейта таблиц


Зачастую при ревизии базы данных проекта, особенно когда количество таблиц в БД постоянно меняется (появляются новые, удаляются ненужные, временно оставляются таблицы со старыми данными) у администратора возникает вопрос, какие из них можно удалить, а какие можно почистить от устаревшей даты

Две несложные процедуры помогут команде проекта определиться и принять верное решение

Процедуры создаем в базе 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;

Время создания и время последнего изменения таблицы

Может быть есть что-то лишнее?

Все

5 1 голос
Ваша оценка поста?
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии