记一次mysql百万级数据分表经历

平时开发,虽然每天都要和数据库打交道,但是并没有涉及到过分库分表这项业务,对分表一直是停留在了解概念程度,没有真正实践过。因为之前的数据基本用不到了,可以转移走,所以这次也只是简单的手动分了一下表,应急用,不是从数据库开始的设计和程序开发的角度进行分表。

这个表的数据超过了500万,之前没有出问题,是因为围绕这个表的业务很少用,估计当时是侥幸过关了。这次程序在查询时报了超时,很简单的一条sql,也没有联表查询,但是条件字段没有加索引,而且还是左右全模糊的like查询,不超时才怪。

因为比较着急,就直接手动开分了。有个订单号字段是以年份开头的,而且这个订单号字段是有索引的,所以就决定按照年份分,从18年开始,新建3张结构一样的表,把18、19、20年的数据转移到各自表中,并在原表中删除,因为是直接操作线上数据库,比较谨慎,从研究到弄完用了近2小时。弄完数据这部分,又把那个查询条件字段加了普通索引,然后比较走运,这个字段是可以做到左边不模糊的,就把sql优化了一下,左边不模糊,这样就可以命中索引了。嗯,效果立竿见影。

严格意义上来说,这算不上一次真正的分表,只是因为历史数据用不到转移出去做个备份而已。不过收获不小,一是意识到程序设计之初要考虑分库分表这件事,二是算是有了一点百万级数据的处理经验,这种机会在平时工作中并不常见,当然我对此也绝不喜闻乐见。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

角落工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值