關於MySQL 查詢表資料大小的總結
-
- 我們知道mysql儲存資料檔案一般使用資料表空間儲存
- 當mysql使用innodb儲存引擎的時候,
- mysql使用表格儲存體資料分為共用資料表空間和獨享資料表空間兩種方式
- ·共用資料表空間:Innodb的所有資料儲存在一個單獨的資料表空間裡面,而這個資料表空間可以由很多個檔案組成,一個表可以跨多個檔案存在。
- 所以其大小限制不再是檔案大小的限制,而是其自身的限制
- -->innodb官方顯示資料表空間的最大限制為64TB
- ·獨享資料表空間:每個表的資料以一個單獨的檔案來存放,這個時候的單表限制,又變成檔案系統的大小限制了
- 在預設情況下,MySQL建立的MyISAM表允許的最大尺寸為4GB
- 二:關於show table stauts\G;中顯示內容的解釋
- Data_length: 150032--->表中資料的大小
- Index_length: 183107584--->表的索引的大小
- Data_free: 25238175744--->資料表空間的大小
- data_Free :如果是共用資料表空間 data_free 是共用資料表空間的大小而非資料的大小。
- 如果是獨享資料表空間才是該表的剩餘空間。
- 如果表是分區儲存的,data_free 就是一個近似值而非精確值所以此時需要查詢
- select sum(data_free) from information_schema.partitions where table_schema = 'db_name' and table_name='tab_name';
- 查詢所有資料庫的大小
- 1:use information_schema;
- select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;
- 2:select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='database_name';
- 3: 查詢指定表的大小
- select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='database_name' and table_name='table_name';
- 三:判斷mysql I/0 效能的一種方式(網路搜集供參考)
- show global status like 'innodb_dblwr%'\G
- 如果innodb_dblwr_pages_writen/innodb_dblwr_writes遠小於64:1,說明磁碟寫入壓力不高
- show engine innodb status\G 查看緩衝池的方法。
- select table_name,data_length+index_length,table_rows from tables where table_schema='database_name' and table_name='table_name';
備忘:朋友們上述有錯誤的地方還望提出來,多多指教,聯絡筆者或者留言,謝謝! |
本文出自 “好望角” 部落格,請務必保留此出處http://haicang.blog.51cto.com/2590303/1112676