Как узнать размер базы данных mysql?

542

Как получить размер базы данных MySQL?
Предположим, что целевая база данных называется "v3".

Новичок
источник
Для конкретной таблицы / определенного размера базы данных поможет скрипт, предоставленный здесь, информация рассчитывается из таблицы information_schema.tables, подробный ответ см. Здесь rathishkumar.in/2017/12/…
Rathish

Ответы:

1185

Запустите этот запрос, и вы, вероятно, получите то, что ищете:

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; 

Этот запрос поступает с форумов mysql , где доступны более полные инструкции.

Брайан Уиллис
источник
4
Даже после того, как я удаляю большинство данных из таблиц в базе данных, размер остается прежним
Vidz
2
@Vidz вы используете движок InnoDB. Если вы это сделаете, вы можете освободить место, если вы не используете file_per_table и не изменяете таблицы.
Мандза
5
Пожалуйста, имейте в виду, что этот метод не будет возвращать ни одной из баз данных, которые являются полностью пустыми, по крайней мере, одна таблица должна существовать для базы данных, чтобы появиться в результате.
v010dya
13
Чтобы выбрать из одной базы данных, добавьте это между FROMи GROUPстрокой: where table_schema='DATABASE_NAME'- замена DATABASE_NAMEна вашу базу данных.
KJ Цена
2
Примечание: MySQL Workbench выдаст Syntax error: {column title} (double quoted text) is not valid input here.ошибку. Заголовки столбцов должны быть заключены в галочки. То есть Database Name.
KareemElashmawy
75

Это можно определить с помощью следующей команды MySQL

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

Результат

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Получить результат в ГБ

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema
Nadeem0035
источник
2
Ницца. Мне нравится этот ответ.
Прогфан
31

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

Скриншот :

введите описание изображения здесь

Joel
источник
26

В качестве альтернативы вы можете напрямую перейти в каталог данных и проверить общий размер v3.myd, v3. myi и v3. файлы frm (для myisam) или v3.idb и v3.frm (для innodb).


источник
7
Примечание: ibd файлы существуют только при использовании innodb_file_per_table
Slashterix
2
Этот ответ очень специфичен для механизма хранения. Ответ @ brian-willis более уместен.
Ману Манджунат
15

Чтобы получить результат в МБ:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

Чтобы получить результат в ГБ:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";
williambarau
источник
12
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

Если он не установлен, его можно установить, установив mysql-utilsпакет, который должен быть упакован в большинстве основных дистрибутивов.

Рик Джеймс
источник
4

Первый вход в MySQL с помощью

mysql -u username -p

Команда для отображения размера одной базы данных вместе с ее таблицей в МБ.

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

Измените имя базы данных на свою базу данных

Команда для отображения всех баз данных с размером в МБ.

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;
Хирен Парги
источник
1

Зайдите в каталог данных mysql и запустите du -h --max-depth=1 | grep databasename

Эван Хастон
источник