对于Merge
引擎来说,分表必须要是MyISAM
引擎才可以。使用Merge引擎来分表特别适合一些日志消息的记录。比如每月一张日志表或者日志量不大爷可以按年来分。
建立数据库
建立分表
建立总表
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message VARCHAR(200));
CREATE TABLE t2 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message VARCHAR(200));
CREATE TABLE t (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
message VARCHAR(200)
) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
在这里需要说明的是,t1
表和t2
表以及t
表的表结构要是一样的,所以当t2
表如果数据量已经很大了,在加入一张t3
表的话需要这样操作
CREATE TABLE t3 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message VARCHAR(200));
ALTER TABLE t UNION=(t1,t2,t3);
INSERT_METHOD详解
INSERT_METHOD
选项可用于指定插入数据的方式,有以下三种取值:
NO
不允许通过总表插入数据,否则执行SQL会报错。例如,执行以下SQL语句,将总表的
INSERT_METHOD
修改为NO
,然后通过总表插入一条数据:FIRST
允许通过总表插入数据,数据存储在MRG文件列出的第一个分表之中。例如,执行以下SQL语句,将总表的
INSERT_METHOD
修改为FIRST
,然后通过总表插入一条数据:LAST
允许通过总表插入数据,数据存储在MRG文件列出的最后一个分表之中。例如,执行以下SQL语句,将总表的
INSERT_METHOD
修改为LAST
,然后通过总表插入一条数据: