1.merge簡介分表就是把N條記錄的表,分成若干個分表,各個分表記錄的總和仍為N。
分表的方法有很多,用merge來分表,是最簡單的一種方式.merge是mysql的一種存儲引擎,它把一組MyISAM數據表當做一個邏輯單元.
CREATE TABLE`t` (`id`int(10) unsigned NOT NULL AUTO_INCREMENT, `data`varchar(45) NOT NULL, PRIMARY KEY(`id`)) ENGINE = MERGE UNION = (t1, t2) INSERT_METHOD = LAST;
其中ENGINE = MERGE表示,使用merge引擎。另外ENGINE = MRG_MyISAM是一樣的意思。UNION = (t1, t2)表示,掛接了t1,
t2表INSERT_METHOD = LAST表示,插入方式。0不允許插入,FIRST插入到UNION中的第一個表,LAST插入到UNION中的最后一個表.
2.merge數據存儲結構mysql中MyISAM引擎下每一張表都對應三個文件: .MYD數據文件,.MYI索引文件,.frm表結構文件.但是Merge引擎下每一張表只有一個.MRG文件.MRG里面存放着分表的關系,以及插入數據的方式。它就像是一個外殼,或者是連接池,
數據存放在分表里面.
3.CRUD對於增刪改查,直接操作總表t就可以了。
4.注意事項
a.重復記錄 / 重復索引若建立merge表前,分表t1 / t2已經存在,並且t1 / t2中存在重復記錄。查詢時,遇到滿足記錄的條目就會返回。意思就是只會顯示一條記錄,同時不會報錯.若建立merge表后,insert / update時,出現重復索引,則會提示錯誤。MERGE表只對建表之后的操作負責
b.如何刪除一個分表不能直接刪除一個分表,這樣會破壞merge表。正確的方法是: alter table t ENGINE = MRG_MyISAM UNION = (t1) INSERT_METHOD = LAST;
drop table t1
c.誤刪merge總表誤刪merge表,是不會造成數據丟失的,只需重新創建總表