mysql

mysql

分表

做mysql集群
预先估计会出现大数据量并且访问频繁的表,将其分为若干个表
merge引擎

Mysql提供Merge存储引擎来进行分表,Merge表能将相同结构的表组合起来当做一张逻辑表来使用。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
create table t1(
id char(19) primary key,
uname varchar(255),
upassword varchar(255)
)ENGINE = MyISAM;
create table t2(
id char(19) primary key,
uname varchar(255),
upassword varchar(255)
)ENGINE = MyISAM;
create table test(
id char(19) primary key,
uname varchar(255),
upassword varchar(255)
)ENGINE = MERGE union(t1,t2) insert_method=last;

使用Merge表有如下几个注意点:
1、所有分表都必须是MyISAM引擎,MyISAN引擎是不支持事务的。
2、Merge表只保证合表后数据唯一性,合表前的数据可能会存在重复。
3、删除分表正确的做法是 ALTER TABLE test UNION (t1); drop table t2;如果直接删除t2,test表会报错。
4、不能自动分表,需要定期维护。

编写自动分表脚本

在使用Merge表过程,最头痛的就是不能自动分表,靠人工定时清理肯定不合理的,在实践过程中,有两种办法来解决这个问题。
第一、使用Mysql Event按时间周期自动建表
第二、分表到达一定数量后自动建表.

参见Mysql Merge分表的研究备忘

分区

partition引擎

Sharding

MYSQL存储过程