首页 数据库

mysql分表

发布于: 2020-08-01

《阿里巴巴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;