一:關(guān)于mysql表數(shù)據(jù)大小
我們知道m(xù)ysql存儲數(shù)據(jù)文件一般使用表空間存儲?
當mysql使用innodb存儲引擎的時候,mysql使用表存儲數(shù)據(jù)分為共享表空間和獨享表空間兩種方式?
·共享表空間:Innodb的所有數(shù)據(jù)保存在一個單獨的表空間里面,而這個表空間可以由很多個文件組成,一個表可以跨多個文件存在。?
所以其大小限制不再是文件大小的限制,而是其自身的限制??
-->innodb官方顯示表空間的最大限制為64TB?
·獨享表空間:每個表的數(shù)據(jù)以一個單獨的文件來存放,這個時候的單表限制,又變成文件系統(tǒng)的大小限制了? ? ? ??
在默認情況下,MySQL創(chuàng)建的MyISAM表允許的最大尺寸為4GB?
二:關(guān)于show table stautsG;中顯示內(nèi)容的解釋
Data_length: 150032--->表中數(shù)據(jù)的大小?
Index_length: 183107584--->表的索引的大小?
Data_free: 25238175744--->表空間的大小?
data_Free :如果是共享表空間 data_free 是共享表空間的大小而非數(shù)據(jù)的大小。?
如果是獨享表空間才是該表的剩余空間。?
如果表是分區(qū)存儲的,data_free 就是一個近似值而非精確值所以此時需要查詢?
select sum(data_free) from information_schema.partitions where table_schema = 'db_name' and table_name='tab_name';?
查詢所有數(shù)據(jù)庫的大小?
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 性能的一種方式(網(wǎng)絡(luò)搜集供參考)
show global status like 'innodb_dblwr%'G??
如果innodb_dblwr_pages_writen/innodb_dblwr_writes遠小于64:1,說明磁盤寫入壓力不高? ? ? ? ??
show engine innodb statusG 查看緩沖池的方法。??
select table_name,data_length+index_length,table_rows from tables where table_schema='database_name' and table_name='table_name';?
本文摘自 :https://blog.51cto.com/l