您的位置:首页 > 数据库 > MySQL

mysql 分表操作

2014-04-17 10:31 267 查看
背景:项目的原始数据每周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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: