背景
现在有一个2000
万左右的日志表,每月大概500
万数据的增量。目前是最最最简单的单表,因一些原因,准备重建该表,并使用parttition
进行分区。
目前准备方案如下:
-
重命名原表
-
创建分区表
-
预创建分区
-
导入数据
-
创建索引(示例)
不考虑业务中断、锁表等问题
其实是目前有一次涉及底层数据的大调整,已经公告停服了,领导安排顺便把这个优化了~~
请教
- 目前方案是否可行?
- 使用
partition
进行分区有什么注意事项吗?
- 预创建分区那里,据说可以通过触发器自动创建,不知道有没有必要?
- 跨分区查询时怎么优化查询条件
3 个赞
Old_Camel
(Old_Camel)
2
1.可行
2.写个sql 脚本 提前批量预创建分区
3.自动创建要触发器,没必要,可能会影响性能
4.查询条件加索引,避免用group order这些
ps:一个月400w 说明已经跑了小半年了,为什么一开始的时候不用clickhouse这种东西存日志呢?可以让运维去学学装一个,作为一个备用方案,比你研究分区查询效率来的更直接. 研发用起来比较简单,就是运维得是个绝活哥,以上都是个人建议,我是个菜鸟,多看其他大佬意见
2 个赞
这个没问题,如果涉及统计分析之类的,可以用代码去处理,sql
只负责提取基础数据
一开始的时候要求快速上线,给领导反馈问题就是先不管,以后再说,只要快就行
运维的问题,运维被优化掉了,现在的运维是测试兼的,只负责给我们开机器等面板操作,其他的不管
QIQIYI
4
佬的方案挺齐全了,跟我们现在差不多,我这是Oracle。处理表 流程都大差不差, 备份数据 建表 建分区 建索引 分区维护 表分析之类的。数据量大的话而且经常查询的话 索引应该好好搞下。