有沒有一種快速確定特定MySQL表佔用多少磁盤空間的方法?該表可能是MyISAM或Innodb。如何確定特定MySQL表佔用了多少磁盤空間?
回答
對於表mydb.mytable
運行本作:
BYTES
SELECT (data_length+index_length) tablesize
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
KILOBYTES
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';
GENERIC
下面是一個通用查詢,其中最大單元顯示爲TB(兆兆字節)
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;
試試看!!!
'SELECT(data_length + index_length)/ power(1024,2)tablesize_mb,table_name FROM information_schema.tables WHERE table_schema ='mydb'order by tablesize_mb;'得到名稱和大小爲'mydb'的所有表的列表,按尺寸。 – guaka
將「DESC」附加到ORDER BY子句以查看首先佔用更多磁盤空間的表。 ;) – mvsagar
準確地說,當使用二進制前綴時,您可能需要調用單位ki ** bi **字節(KiB),me ** bi **字節(MiB)和gi ** bi **字節(GiB) (乘以2的冪)。或者,您可能希望使用小數前綴(乘以1000的冪),然後調用單位ki ** lo **字節(KB),me ** ga **字節(MB)和gi ** ga **字節(GB)。 查看更多:https://en.wikipedia.org/wiki/Binary_prefix –
從How do I check how much disk space my database is using?
兩者您可以通過點擊數據庫名稱在左框架 和讀取尺寸表中那裏看着
phpMyAdmin
在 您的控制面板檢查MySQL表的大小正確的框架。
下面的查詢會也有助於得到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';
這個假設安裝了phpMyAdmin – thebigjc
也許你可以看看文件的大小相同的信息...
每個表存儲在幾個單獨的文件在命名爲您所謂的數據庫的文件夾內。這些文件夾存儲在mysql數據目錄中。
從那裏你可以做一個'du -sh。*'來獲得磁盤上表的大小。
這隻適用於MyISAM數據庫。 OP要求提供與InnoDB協同工作的解決方案。 – Bgs
在Linux中默認安裝的MySQL:
[[email protected]]$ ls -lha /var/lib/mysql/<databasename>
這會不會是準確的InnoDB表。磁盤上的大小實際上大於通過查詢報告的大小。
請參閱此鏈接從Percona獲取更多信息。
http://www.mysqlperformanceblog.com/2008/12/16/how-much-space-does-empty-innodb-table-take/
基礎上RolandMySQLDBA的答案,我想我們可以用上面得到每個模式的尺寸表:
SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
FROM information_schema.tables GROUP BY table_schema;
真的很喜歡它!
我只想用「mysqldiskusage」工具,遵循SQL的
$ 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
OP詢問特定MySQL表的磁盤空間,而不是整個數據庫 – machineaddict
快一點,以獲得以MB爲排名前20位最大的表。
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;
希望對某人有用!
非常有幫助!謝謝Ben! – aero
- 1. 索引文件佔用了多少磁盤空間?
- 2. 如何確定一個表在ASE中使用多少磁盤空間
- 3. 確定哪個表在MySQL中佔用大部分磁盤空間
- 4. AllegroGraph佔用磁盤空間
- 5. 如何查找使用Java留下了多少磁盤空間?
- 6. OpenFeint磁盤空間佔用空間
- 7. SQL列使用多少磁盤空間
- 8. 慢MySQL查詢佔滿了我的磁盤空間
- 9. heroku計劃有多少磁盤空間?
- 10. 索引是否佔用磁盤空間?
- 11. Cassandra 2.0佔用磁盤空間
- 12. Postgres 9.x:如何確定工作的可用磁盤空間
- 13. MySQL:文本佔用多少空間?
- 14. AWS S3:我如何查看使用多少磁盤空間
- 15. 表使用過多的磁盤空間
- 16. 在SSMS中,您如何檢查索引在磁盤上佔用了多少空間
- 17. 清除MySQL磁盤空間
- 18. MySQL回收磁盤空間,優化表
- 19. 如何找到Cocoa剩下多少磁盤空間?
- 20. CygWin tmp文件夾佔用太多磁盤空間
- 21. 如何查看佔用Azure服務計劃的磁盤空間?
- 22. 如何測量Postgres索引佔用的磁盤空間?
- 23. TMPFS_MAGIC在linux標題和錯誤,確定可用磁盤空間
- 24. iPhone上的應用程序有多少磁盤空間可用?
- 25. 服務器中缺少磁盤空間
- 26. TFS 2015 - 磁盤空間持續減少
- 27. 做Mongo索引時使用多少磁盤空間會增加?
- 28. 爲什麼我的HSQLDB表格在磁盤上佔用太多空間?
- 29. 如何確定SQL Server 2005中索引視圖使用的磁盤空間
- 30. 何時在刪除mySQL表後磁盤空間再次可用?
在PHPMyAdmin中,只需點擊ob表即可看到空間使用情況。 –
這個問題的答案幫助我得到我的解決方案。徹底搜索一個工具,可以幫助我,而不用每次執行相同的查詢來獲取數據,使我通過[MONyog](https://www.webyog.com/product/monyog),[MySQL企業監視器](http ://www.mysql.com/trials/),[Percona工具包](https://www.percona.com/software/mysql-tools/percona-toolkit)。他們都提供了關於磁盤信息的詳細信息,但最終選擇了MONyog來獲得更好的圖形圖表和簡單的GUI。 – Mathew