Подтвердить что ты не робот

Как определить, сколько места на диске занимает определенная таблица MySQL?

Есть ли быстрый способ определить, сколько места на диске занимает определенная таблица MySQL? Таблица может быть MyISAM или Innodb.

4b9b3361

Ответ 1

Для таблицы mydb.mytable запустите это для:

БАЙТ

SELECT (data_length+index_length) tablesize
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

килобайт

SELECT (data_length+index_length)/power(1024,1) tablesize_kb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

MEGABYTES

SELECT (data_length+index_length)/power(1024,2) tablesize_mb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

GIGABYTES

SELECT (data_length+index_length)/power(1024,3) tablesize_gb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

ОБЩИЙ

Вот общий запрос, где максимальный дисплей устройства - TB (TeraBytes)

SELECT 
    CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',SUBSTR(units,pw1*2+1,2)) DATSIZE,
    CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',SUBSTR(units,pw2*2+1,2)) NDXSIZE,
    CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',SUBSTR(units,pw3*2+1,2)) TBLSIZE
FROM
(
    SELECT DAT,NDX,TBL,IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
    FROM 
    (
        SELECT data_length DAT,index_length NDX,data_length+index_length TBL,
        FLOOR(LOG(IF(data_length=0,1,data_length))/LOG(1024)) px,
        FLOOR(LOG(IF(index_length=0,1,index_length))/LOG(1024)) py,
        FLOOR(LOG(IF(data_length+index_length=0,1,data_length+index_length))/LOG(1024)) pz
        FROM information_schema.tables
        WHERE table_schema='mydb'
        AND table_name='mytable'
    ) AA
) A,(SELECT 'B KBMBGBTB' units) B;

Дайте ему попробовать!!!

Ответ 3

Быстрый бит SQL для получения 20 лучших таблиц в MB.

SELECT table_schema, table_name,
  ROUND((data_length+index_length)/POWER(1024,2),2) AS tablesize_mb
FROM information_schema.tables
ORDER BY tablesize_mb DESC LIMIT 20;

Надеюсь, что это кому-то полезно!

Ответ 5

Основываясь на ответе RolandMySQLDBA, я думаю, мы можем использовать приведенное выше, чтобы получить размер каждой схемы в таблице:

SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb 
    FROM information_schema.tables GROUP BY table_schema;

Действительно понравилось!

Ответ 6

Взято из Как проверить, сколько дискового пространства используется моей базой данных?

Вы можете проверить размер таблицы MySQL, посмотрев phpMyAdmin в вашей панели управления, нажав на имя базы данных в левом фрейме и чтение размера для таблиц там в правом кадре.

Следующий запрос также поможет получить ту же информацию в bytes

select SUM(data_length) + SUM(index_length) as total_size 
from information_schema.tables 
where table_schema = 'db_name' 
and table_name='table_name';

Ответ 7

Возможно, вы можете посмотреть размер файлов...

Каждая таблица хранится в нескольких отдельных файлах внутри папки, которая называется тем, что вы назвали своей базой данных. Эти папки хранятся в каталоге данных mysql.

Оттуда вы можете сделать "du -sh. *", чтобы получить размер таблицы на диске.

Ответ 8

Я бы просто использовал инструмент mysqldiskusage, как следует

$ mysqldiskusage --server=user:[email protected] mydbname
# Source on localhost: ... connected.

# Database totals:
+------------+----------------+
| db_name    |         total  |
+------------+----------------+
| mydbaname  | 5,403,033,600  |
+------------+----------------+

Total database disk usage = 5,403,033,600 bytes or 5.03 GB