博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql分表技术
阅读量:6325 次
发布时间:2019-06-22

本文共 1229 字,大约阅读时间需要 4 分钟。

一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法。

目前我所知道的方法都是MYISAM的,INNODB如何做分表并且保留事务和外键,我还不是很了解。

首先,我们需要想好到底分多少个表,前提当然是满足应用。

这里我使用了一个比较简单的分表方法,就是根据自增id的尾数来分,也就是说分0-9一共 10个表,其取值也很好做,就是对10进行取模。

另外,还可以根据某一字段的md5值取其中几位进行分表,这样的话,可以分的表就很多了。

我一共建立10个表:

最后一个表:a,有几点注意:insert_method=last,如果是insert_method=0,则会报错,执行不成功。

 

注意,合并表也必须和前面的表有相同的结构,类型,长度,包括字段的顺序都必须一致这里。

好了,当需要查询的时候,我们可以只对article这个表进行操作就可以了,也就是说这个表仅仅只能进行select操作,

那么对于 插入也就是insert操作应该如何来搞呢,首先就是获取唯一的id了,这里就还需要一个表来专门创建id,代码如下:

 

 

接下来,我们查看所以得表:

 

紧接着,我们进行“增删改查”的具体操作。

a.添加数据

步骤:

a-1,先通过表:cre_id,产生一个id值,然后取模(模10),得到,0,1,2,3,4,5,6,7,8,9任意一值。

a-2,拼装数据表:a_n,其中n=0,1,2,3,4,5,6,7,8,9。

a-3,执行常规的插入操作。insert into a_n(...)values(...);

b.代码:

    
Document
标题:
内容:
0 && $sql_a_query > 0){ echo ""; echo "";}else{ echo ""; echo "";}?>

几点注意:

对于表:cre_id,首先要查询该表总共的条数,当前id=总条数 + 1;

对于插入表:首先当前id模10,即(%10),拼接数据表:"a_"+"模10后的取值";

插入数据:首先要查询当前表的总数,当前表id= 当前表的总数 + 1,然后执行插入操作;

 

d.部分截图如下:

 

基本上,执行插入操作就OK了。

e.至于:删除操作,修改操作,,之针对a_0,a_1,a_2,a_3.....a_9等进行操作。

如:delete from a_n where id = m;  n=0,1,1...9  ;  m=当前表id值  

update a_n set sub='mm',con='nn' where id=mn; 

 

f.select操作。针对于主表a进行就可以了。

转载地址:http://migaa.baihongyu.com/

你可能感兴趣的文章
打造个人的vimIDE
查看>>
2019中山大学程序设计竞赛 Enlarge it(水题)
查看>>
BZOJ 4259 FFT
查看>>
POJ 2455 二分+网络流
查看>>
POJ 3280 DP
查看>>
装箱和拆箱
查看>>
golang 文件导入数据追加sheet
查看>>
switch 和 if...else if 的区别
查看>>
CSS3响应式布局之弹性盒子
查看>>
遇到问题集锦
查看>>
lnmp环境下piwiki网站流量分析工具的安装及配置
查看>>
saltstack自动化运维系列③之saltstack的常用模块使用
查看>>
shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句...
查看>>
工控安全资料
查看>>
单元测试基础知识(转)
查看>>
ArrayList和LinkedList区别
查看>>
使用原理视角看 Git
查看>>
消息队列的面试题6
查看>>
最小割dp Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) E
查看>>
2018-2019-2 20175311 实验一《Java开发环境的熟悉》实验报告
查看>>