《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。
分表的方法
- 中间件方式。如 mysql cluster ,mysql proxy,mysql replication,drdb等等
- 业务逻辑去分,如果订单按照日期,订单一个用户一张订单表,hash方式等等
- merge存储引擎来实现分表
分表实战
接下来是结合业务逻辑和merge去实现分表实战
code_1表创建插入数据
1 2 3 4 5 6
| CREATE TABLE `mm_1` ( `full_code` CHAR (10) NOT NULL, PRIMARY KEY (`full_code`) )ENGINE=MyISAM DEFAULT CHARACTER SET=utf8; INSERT INTO mm_1 VALUES (1), (2), (3);
|
code_2表创建插入数据
1 2 3 4 5 6 7
| CREATE TABLE `mm_2` ( `full_code` CHAR (10) NOT NULL, PRIMARY KEY (`full_code`) )ENGINE=MyISAM DEFAULT CHARACTER SET=utf8;
INSERT INTO mm_2 VALUES (4), (5), (6);
|
使用merge创建合表数据
1 2 3 4
| create table if not exists mm( `full_code` CHAR (10) NOT NULL, index(full_code) )engine = merge union=(mm_1,mm_2) insert_method = last auto_increment=1 default charset=utf8;
|