数据分析师SQL-分表分区

这是一个系列,更多内容请阅读数据分析师SQL系列

分区的实践

分表分区这方面的实践经历不足,仅做过分区,所以这篇文章谈谈当时分区的思考。

面临的问题:经常查询的表,由于每日入表数据较多,虽然对这张表建立了索引,也对查询的sql进行了explain,确实用到了索引,但是依然查询较慢
总体思路:和业务沟通,保证最近一段时间的数据,提供查询,老数据进入归档表
具体方案:

  • 建立一个归档表,由于仅作归档,采用MyISAM存储引擎,可能会查询某个月内的数据,所以对这个表进行以月分区
  • 编写Python脚本,归档一段时间的数据到归档表
    • 其中有一个坑,如果原始表是innodb存储引擎的话,delete的sql语句中务必加上limit
    • 用循环删除的方法,循环终止的条件可以设为 cur.rowcount == 0
    • 如果一次性删除大量的数据,容易造成MySQL占用资源较多的问题
  • 用crontab创建定时任务,凌晨左右执行,删除最小日期的数据

分表的实践

暂无

posted @ 2020-08-20 20:37  duohappy  阅读(75)  评论(0编辑  收藏  举报