mysql 按天分区_MySQL 如何按天动态表分区?

目前有个表的数据比较大( 1T 左右,3 亿多行)使用了表分区

/*!50100 PARTITION BY RANGE (DAY(`date_id`))

(PARTITION day1 VALUES LESS THAN (2)

ENGINE = InnoDB,

PARTITION day2 VALUES LESS THAN (3)

ENGINE = InnoDB,

……

预先分了 31 个区,数据按天落到分区内,查询效率还行

目前有个问题,因为单机存不下了,每天会删 15 天前的数据,但数据量比较大,删除需要执行 3 小时(已经是按 date_id 字段去删了),很是影响业务,还容易造成主从挂掉

想过的方案:

MySQL 按分区删数据倒是很快,想过每天创建明天的分区,但还是因为数据量大 ALTER TABLE 会卡死

其它问题:

1.为什么不分库、分表

因为主要是 OLAP 操作,需要各种 group by/count,分库分表不合适

2.为什么要用 MySQL,不使用 PostgreSQL 或者 TiDB

首先不知道目前这个量级和问题,其它数据库是否能解决,再者是很多上下游、周边系统只支持 MySQL

不过也存了 ES 一份(其实 ES 运维压力并不比 MySQL 小)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值