Как получить реальный размер базы данных MySQL?

Я хотел бы знать, сколько места использует моя база данных MySQL, чтобы выбрать веб-хост. Я нашел команду SHOW TABLE STATUS LIKE 'table_name', поэтому, когда я делаю запрос, я получаю что-то вроде этого:

Name       | Rows | Avg. Row Length | Data_Length | Index Length
----------   ----   ---------------   -----------   ------------
table_name   400          55            362000        66560
  • Число
  • округлено.

Итак, у меня есть 362000 или 400 * 362000 = 144800000 байтов данных для этой таблицы? И что означает значение индекса? Спасибо!

Ответ 1

От С. Пракаша, найденного в Форум MySQL:

SELECT table_schema "database name",
    sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
    sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema; 

Ответ 2

Вы можете получить размер своей базы данных Mysql, выполнив следующую команду в клиенте Mysql

SELECT  sum(round(((data_length + index_length) / 1024 / 1024 / 1024), 2))  as "Size in GB"
FROM information_schema.TABLES
WHERE table_schema = "<database_name>"

Ответ 3

Если вы используете phpMyAdmin, он может сообщить вам эту информацию.

Просто перейдите в "Базы данных" (меню сверху) и нажмите "Включить статистику".

Вы увидите что-то вроде этого:

phpMyAdmin screenshot

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

Ответ 4

если вы хотите найти его в MB, сделайте это

SELECT table_schema                                        "DB Name", 
   Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema; 

Ответ 5

В основном существует два способа: запросить DB (длина данных + длина индекса) или проверить размер файлов. Длина индекса связана с данными, хранящимися в индексах.

Все описано здесь:

http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/

Ответ 6

Ни один из ответов не включает размер служебных данных и размеры таблиц метаданных.

Ниже приведена более точная оценка "дискового пространства", выделенного базой данных.

SELECT ROUND((SUM(data_length+index_length+data_free) + (COUNT(*) * 300 * 1024))/1048576+150, 2) AS MegaBytes FROM information_schema.TABLES WHERE table_schema = 'DATABASE-NAME'

Ответ 7

SUM(Data_free) может быть или не быть действительным. Это зависит от истории innodb_file_per_table. Подробнее обсуждение здесь.