2009-11-14 3 views
330

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

+0

Для конкретной таблицы/конкретного размера базы данных сценария, представленный здесь, поможет, информации вычисляется из таблицы INFORMATION_SCHEMA.TABLES, см подробный ответ здесь http://www.rathishkumar.in/2017/12/how-to-find-database-and-table-size-in-mysql.html – rathishDBA

ответ

760

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

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; 

Этот запрос приходит от the mysql forums, где существуют более полные указания доступно.

+0

этот выбор не показывать мне всех. Я попытался проверить базу данных OTRS и таблицы с вложением (возможно, какое-то поле BLOB), не исправить правильно ... любой workaroud? – ceinmart

+1

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

+2

@Vidz вы используете движок InnoDB. Если вы это сделаете, вы можете освободить место, если вы не используете file_per_table и не изменяете таблицы. – mandza

22

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

+4

Примечание: файлы ibd существуют только при использовании innodb_file_per_table – Slashterix

+0

Этот ответ очень специфичен для механизма хранения. Answer by @ brian-willis более подходит. –

16

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

скриншоте:

enter image description here

5

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

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";` 
3
mysqldiskusage --server=root:[email protected] pics 

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

Это можно определить с помощью следующей команды 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 
+1

Nice. Мне нравится этот ответ. – progfan

Смежные вопросы