关于 mysql 冷热数据分离的问题,你们是用开源脚本,还是自己撸代码

2017-06-16 15:18:39 +08:00
 chenqh
比如有一个张表,order 表一般查询的是最近 3 个月的记录,但是保留了 1 年的记录。
现在我想把 order 表中创建时间是 3 个月之后的记录,导入到 old_order 表中。
我自己想到的办法是撸代码,一条记录一条记录的复制过去,然后删队原始数据 。
你们一般的做法是什么?
5194 次点击
所在节点    MySQL
12 条回复
nybux
2017-06-16 16:40:00 +08:00
不用一条条吧,直接 where 一个时间条件,用 insert into ... select 就可以了
littleylv
2017-06-16 16:44:20 +08:00
1 楼说的对
chenqh
2017-06-16 16:52:13 +08:00
@nybux 但是这个样子会变成手动的对吧,我的想法是变成定时任务那样 ,每天跑一点,省得我每天手动去弄,有可能某天就出错了呢
nybux
2017-06-16 16:55:09 +08:00
写成脚本,然后由 crontab 去定时调用
jianzhiyao020
2017-06-16 16:55:56 +08:00
可以这样子,
按照时间分表,
新表数据量少,
建索引量少,
插入、检索速度快。

冷热可以这样区分。
2ME
2017-06-16 16:57:11 +08:00
同 1 楼 一样可以定时任务 where 条件的时间灵活一点就好了
yanze0613
2017-06-16 17:17:26 +08:00
insert into ... select,限制每次读取的行数 然后写进 crontab
bk201
2017-06-16 17:29:08 +08:00
你还不如 3 个月就换一次表名来得快捷
littleylv
2017-06-16 17:31:22 +08:00
@bk201 #8 这就是你的错了,要换也是“每天”,不是“每 3 个月”
snail00
2017-06-16 17:38:49 +08:00
写个存储过程, 然后用 mysql 的事件去定时执行, 我现在就在撸这个.
chenqh
2017-06-16 17:49:29 +08:00
@snail00 好吧,写存储过程,我宁愿撸代码
noNOno
2017-06-16 18:03:51 +08:00
时间字段上建个聚集索引不行么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/368884

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX