1

Я новичок в мире MySQL и не уверен, если есть способ рассчитать использование MySQL TableSpace/DiskSpace в процентах. Я знаю, что mysql не предоставляет верхний предел или свободное пространство, как Oracle DB, а просто пространство, занимаемое индексными таблицами и таблицами данных. Я решил добавить эти два значения и разделить их с общим пространством, доступным для точки монтирования, указанной в атрибуте "datadir" mysql. Мои запросы:

  1. Это правильный способ сделать это?
  2. Что делать, если базы данных / таблицы создаются на разных точках монтирования. Есть ли способ контролировать доступное пространство для экземпляра MySQL тогда?

2 ответа2

1

Этот запрос вернет имя таблицы и количество записей, которые он имеет.

SELECT 
TABLE_SCHEMA AS `Database`,
TABLE_NAME AS `Table`,
TABLE_ROWS AS `Rows` 
FROM
information_schema.TABLES ;

Этот запрос вернет базы данных на сервере относительно Размер */

SELECT 
TABLE_SCHEMA  AS `Database`,
SUM((data_length + index_length) / (1024 * 1024)) AS `Database_Size`
FROM information_schema.TABLES 
GROUP BY table_schema 
ORDER BY `Database_Size` DESC 
LIMIT 5 ;
0

Вы можете попробовать использовать этот запрос:

select
  TABLE_SCHEMA,
  TABLE_NAME,
  (DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 AS SIZE
from information_schema.TABLES

но вы заметили, что этот РАЗМЕР меньше суммы файлов * .ibd и * .frm на диске. Это связано с тем, что при удалении строки из таблицы данные не удаляются из файла. Для очистки файла * .ibd необходимо выполнить запрос:

optimize table table_name

Лучшее решение для этого - проверить размер файла для каждой таблицы и сравнить с размером диска.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .