2009-11-14 91 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 2017-12-29 12:42:06

回答

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 2013-10-08 14:36:11

+1

即使我從數據庫中的表中刪除了大部分數據,大小仍然相同 – Vidz 2014-08-08 09:05:54

+2

@Vidz是否使用InnoDB引擎。如果這樣做,除非使用file_per_table和alter table,否則可以釋放空間。 – mandza 2014-11-01 09:32:58

22

或者,您可以直接跳到數據目錄並檢查v3.myd,v3的組合大小。 myi和v3。 frm文件(對於myisam)或v3.idb & v3.frm(對於innodb)。

+4

注意:ibd文件僅在使用innodb_file_per_table時才存在 – Slashterix 2014-08-01 21:45:07

+0

此答案對存儲引擎非常具體。通過@ brian-willis回答更合適。 – 2017-06-23 09:03:55

16

或者,如果您使用的是phpMyAdmin,則可以查看數據庫頁腳structure選項卡中表格大小的總和。實際的數據庫大小可能略高於此大小,但它看起來與上面提到的table_schema方法一致。

屏幕截圖:

enter image description here

5

要以MB爲單位得到的結果:

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

要GB得到一個結果:

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

不錯。我喜歡這個答案。 – progfan 2017-12-22 11:45:37