mysql性能优化_分表

我是根据这两篇文章来实现的,但是这两篇文章写的都不太细致,所以我在这里写一篇基于这两篇文章的原创

https://blog.csdn.net/qq_29423883/article/details/78926553

http://www.cnblogs.com/lucky-man/p/6207873.html

主要思想呢,就是建一张虚拟表(MRG_MYISAM引擎),按照一定的规则对要拆分表按照一定规则进行拆分(比如按照月份/平台类型)

我是使用的meger分表的方法,我感觉相对比较简答,而且易于扩展,代码基本不用改变

可能遇到的问题就是id冲突,实际也是看应用场景了,有可能你不会遇到,遇到后呢,应该是很常见的问题了,百度一下你就知道,上面文章中应该也是有的。

分表的方式上面有的,我这里细致的描述一下吧

1.原需要拆分的表不要动,复制表结构创建新表create table new like old;

2.创建实际子表

     原来old表(需要拆分的表)应该存储引擎是innodb的,将其改为mysam(navicat中设计表->选项)

     根据你的规则,建立相对应个数的表

3.向子表中拆分数据

      比如说按照月份insert into new_201811 select * from old where date like '201811__';

      像这样依次建立相对应个数的表

4.建立虚拟表(主表)

      复制表结构create table xuni like old

      将引擎改为MRG_MYISAM(和如上修改方法一样)

      注意在选项的联合里面,写上所有的子表名称(注意符号):`new1`,`new2`

5.打开虚拟主表,select count(1) from xuni统计的数量和所有子表数量相同

6.注意:我这边在做完分表后,竟然没有效果,我在网上简单搜了一下,没有发现类似的问题

   后来经过测试,是因为索引,我这里使用了联合索引,如果你也使用了联合索引的话,注意

  联合索引的第一个必须是可以最大范围的缩小查询范围的条件,你可以关注一下explain分析的rows字段

7.至此教程结束,如有问题,请下方留言评论,或者联系我博客左侧联系方式等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值