背景:项目的原始数据每周10W,需要存储两年的数据,于是考虑将原始数据表进行分表(以id取模24分成24个表)。但是对于分表和合并表之间的一些操作不是很熟悉,特进行一些正式操作前的测试。
一、查询(合并表和分表保持一样的结构和索引,这样可以通过查询合并表,让合并表自己打开查找对应的分表完成查询是可以的)
二、删除和修改(不确定的主要是在这块,不确定能不能通过操作合并表影响到对应的分表),如下进行测试后发现删除是可以的(备注:项目实际中也可以通过update合并表,完成对符合条件的分表数据修改)。
-- 测试分表删除操作机制 START
-- 创建分表1
DROP TABLE t1;
CREATE TABLE t1 (
`id` int(11) NOT NULL ,
`goods_id` int(11) NULL DEFAULT NULL COMMENT '宝贝id' ,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
-- 创建分表2
DROP TABLE t2;
CREATE TABLE t2 (
`id` int(11) NOT NULL ,
`goods_id` int(11) NULL DEFAULT NULL COMMENT '宝贝id' ,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
-- 创建合并表
DROP TABLE t_all;
CREATE TABLE t_all (
`id` int(11) NOT NULL ,
`goods_id` int(11) NULL DEFAULT NULL COMMENT '宝贝id' ,
PRIMARY KEY (`id`)
)
ENGINE=MRG_MyISAM UNION(t1,t2) INSERT_method=NO
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
INSERT INTO t1 VALUES (1,35),(2,56),(3,45);
INSERT INTO t2 VALUES (1,62),(2,53),(3,39);
SELECT * FROM t_all
DELETE FROM t_all WHERE goods_id > 55