色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

原來數(shù)據(jù)庫表是innodb怎樣用merge存儲(chǔ)引擎來實(shí)現(xiàn)分表

原來數(shù)據(jù)庫表是innodb怎樣用merge存儲(chǔ)引擎來實(shí)現(xiàn)分表?

對(duì)于數(shù)據(jù)量很大的一張表,i/o效率底下,分表勢(shì)在必行!

使用程序分,對(duì)不同的查詢,分配到不同的子表中,是個(gè)解決方案,但要改代碼,對(duì)查詢不透明。

好在mysql 有兩個(gè)解決方案:

Partition(分區(qū),在MySQL 5.1.中實(shí)現(xiàn)) 和 Mysql Merge存儲(chǔ)引擎。

本文討論 Mysql Merge存儲(chǔ)引擎。

CREATE TABLE t1 ( a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR(20));

CREATE TABLE t2 ( a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR(20));

INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');

INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');

CREATE TABLE total (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR(20)) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;

對(duì)應(yīng)定期分表的情況下,只要定期相應(yīng)的增加一個(gè)基礎(chǔ)表,再修改merge表中的 union 就行了(ALTER TABLE tbl_name UNION=(...))。

如在增加一個(gè)表(需和其他基礎(chǔ)表一樣的結(jié)構(gòu)):

CREATE TABLE t3( a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR(20));

ALTER TABLE total UNION=(t1,t2,t3)

INSERT_METHOD=LAST;表示插入的方法,INSERT_METHOD的值可以是 FIRST(插入第一個(gè)表),LAST(最后一個(gè)表),NO(不能插入)

查詢的時(shí)候,和平常一樣

select * from total where ....

merge表會(huì)自動(dòng)找到相應(yīng)的基礎(chǔ)表進(jìn)行查詢。

需要注意的是 merge表并不維護(hù) “唯一性”檢查,唯一性有各基礎(chǔ)表完成。所以插入新的記錄時(shí)候可能和其他基礎(chǔ)表的內(nèi)容重復(fù)。所以再插入去需要用代碼進(jìn)行唯一性檢查。