1. 程式人生 > >共享表空間與獨立表空間、frm,MYD,MYI.idb,par文件說明

共享表空間與獨立表空間、frm,MYD,MYI.idb,par文件說明

適合 數據 sla back 磁盤空間 ble .cn per 會有

一、共享表空間與獨立表空間
MySQL5.5默認是共享表空間 ,5.6中,默認是獨立表空間。

共享表空間:
ibdata1是InnoDB的共享表空間,默認配置是把全部表空間存放到ibdata1中,因此而造成ibdata1文件無限增長需釋放之說。
優點:
可以放表空間分成多個文件存放到各個磁盤上(表空間文件大小不受表大小的限制,如一個表可以分布在不同步的文件上)。數據和文件放在一起方便管理。
缺點:
1. 大量刪除操作後表空間中將會有大量的空隙,特別是對於統計分析,日值系統這類應用最不適合用共享表空間。
2. 共享表空間管理會出現表空間分配後不能回縮的問題,當出現臨時建索引或是創建一個臨時表的操作表空間擴大後,就是刪除相關的表也沒辦法回縮 那部分空間了。這種情況處理只能是是建一個新的Slave從主庫上Dump出來,然後在Dump到從庫中,動作較大。
3. 對於InnoDB Hot Backup備份的操作(或是直接冷備),每次需要CP的文件比較大。如果現在有180G的表空間,但實際數據只有50多G,那麽我們將面對每次需要拷180G的數據。

獨立表空間:
在配置文件(my.cnf)中設置: innodb_file_per_table 為 On
優點:
1.每個表都有自已獨立的表空間。
2.可以通過文件系統(例如使用ls命令)來評估一個數據表所占的磁盤空間。
3.可以實現單表在不同的數據庫中移動。
4. 此參數為On時,InnoDB引擎的壓縮特性
4.drop table自動回收表空間 ,刪除大量數據後可以通過alter table XX engine = innodb;回收空間
缺點:
單表增加過大,如超過100個G。
對於單表增長過大的問題,如果使用共享表空間可以把文件分開,但有同樣有一個問題,如果訪問的範圍過大同樣會訪問多個文件,一樣會比較慢。對於獨立 表空間也有一個解決辦法是:使用分區表,也可以把那個大的表空間移動到別的空間上然後做一個連接。其實從性能上出發,當一個表超過100個G有可能響應也 是較慢了,對於獨立表空間還容易發現問題早做處理。

二、frm,MYD,MYI.idb,par文件說明
如數據庫a,表b。
1、如果表格b采用MyISAM,data\a中會產生3個文件:
b.frm :描述表結構文件,字段長度等
b.MYD(MYData):數據信息文件,存儲數據信息(如果采用獨立表存儲模式)
b.MYI(MYIndex):索引信息文件。

2、如果表格b采用InnoDB,data\a中會產生1個或者2個文件:
b.frm :描述表結構文件,字段長度等
如果采用獨立表存儲模式,data\a中還會產生b.ibd文件(存儲數據信息和索引信息)
如果采用共存儲模式的,數據信息和索引信息都存儲在ibdata1中

如果采用分區存儲,data\a中還會有一個b.par文件(用來存儲分區信息)

共享表空間與獨立表空間、frm,MYD,MYI.idb,par文件說明