關於MySQL 查詢表資料大小的總結

germany006發表於2013-10-20
轉載地址:

一:關於mysql表資料大小

我們知道mysql儲存資料檔案一般使用表空間儲存 
當mysql使用innodb儲存引擎的時候,mysql使用表儲存資料分為共享表空間和獨享表空間兩種方式 
·共享表空間:Innodb的所有資料儲存在一個單獨的表空間裡面,而這個表空間可以由很多個檔案組成,一個表可以跨多個檔案存在。 
所以其大小限制不再是檔案大小的限制,而是其自身的限制  
--&gtinnodb官方顯示錶空間的最大限制為64TB 
·獨享表空間:每個表的資料以一個單獨的檔案來存放,這個時候的單表限制,又變成檔案系統的大小限制了        
在預設情況下,MySQL建立的MyISAM表允許的最大尺寸為4GB 

二:關於show table stauts\G;中顯示內容的解釋

Data_length: 150032---&gt表中資料的大小 
Index_length: 183107584---&gt表的索引的大小 
Data_free: 25238175744---&gt表空間的大小 
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'; 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-774684/,如需轉載,請註明出處,否則將追究法律責任。

相關文章