0
点赞
收藏
分享

微信扫一扫

mysql性能优化_分表


主要思想呢,就是建一张虚拟表(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 条评论