这里做的是我的一个笔记。
水平分表比较简单, 理解就是:
user1
1 2 3 4 5 6 |
|
user2
1 |
|
user
1 2 3 4 5 6 |
|
1) ENGINE = MERGE 和 ENGINE = MRG_MyISAM是一样的意思,都是代表使用的存储引擎是 Merge。
2) INSERT_METHOD,表示插入方式,取值可以是:0 和 1,0代表不允许插入,1代表可以插入;
3) FIRST插入到UNION中的第一个表,LAST插入到UNION中的最后一个表。
1 2 3 |
|
如果user1和user2中有数据的话先清除
1 2 |
|
然后在user1和user2表中分别建立一个触发器(tr_seq和tr_seq2),触发器的功能是 当在user1或者user2表中增加一条记录时,取出tb_ids中的id值,赋给user1和user2的id,然后将tb_ids的id值加1.
user1的触发器:tr_seq
1 2 3 4 5 6 7 8 9 |
|
user2的触发器:tr_seq2
1 2 3 4 5 6 7 8 9 |
|
我是直接扔进一个sql文件source执行的, 效果都一样.
然后查询一下触发器
1 |
|
此时已经分表成功, 下面插入数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
查询一下所有数据库
1 |
|
查询user1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
查询user2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
再插入几条数据, 前面插入的太偏向了
1 2 3 4 5 6 7 8 |
|
此时查看user
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
user1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
user2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
下面我们update一下
1 2 3 |
|
再看一下user
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
user1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
user2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
水平分表完成!
原文链接 http://www.cnblogs.com/chenglee/p/9401384.html