MySQL 冷热数据分离一问

2015-09-13 22:48:07 +08:00
 mulog
基本上来说有一个表,随时有新数据进来,但是 99.99%的访问都只是最近一周的数据。
随着时间越来越长,这个表变得越来越大,即使有索引, query 也还是不够快。

所以想请问有没有什么方案可以把最近一周的“新鲜”数据和老的数据分离开?
我能想到的只有搞个 cron 每天把一周前的数据移到另一个表,但是这显然太挫了。。-_-
10337 次点击
所在节点    MySQL
14 条回复
msg7086
2015-09-13 23:05:24 +08:00
挫毛,能解决问题的方案就是牛逼方案
humiaozuzu
2015-09-13 23:12:23 +08:00
那就加缓存
而且,标准做法就是 archive 旧数据,一点也不搓
lavadore
2015-09-13 23:15:25 +08:00
按时间分表或者分区咯
kslr
2015-09-13 23:24:34 +08:00
一个月一张表
9hills
2015-09-13 23:44:51 +08:00
这个真的不搓,是标准做法。
Aliencn
2015-09-14 01:24:50 +08:00
如果你是负责存储的,那就上 SSD 阵列
如果你是负责数据库的,那就搞分区或分表
如果你是负责 web 端的,那就写数据库的时候就按照时间自动创建表,读数据库的时候根据请求查不同的表
brucefeng
2015-09-14 09:52:41 +08:00
@Aliencn 说的很实在。
如果是应用层:
1 、加缓存:这个可以缓解数据库的访问量
2 、最近一周的数据和老数据分表。如果不想按时间自动创建表,可以一开始就两张表,一张存全量的表 A ,一张存最近一周的表 B ,使用定时任务定期清理表 B 。
maskerTUI
2015-09-14 09:56:49 +08:00
分表!!!!!
jziwenchen
2015-09-14 10:30:46 +08:00
从总表查数据 搬到一个分表去 然后不断 cron.
realpg
2015-09-14 12:42:52 +08:00
分表到你这里就变成挫了……
好吧 已经挫了十年的苦逼程序员飘过
mulog
2015-09-14 12:44:19 +08:00
谢谢大家 看来暂时用 cron 搞迁移就可以了 ^^
mulog
2015-09-14 12:46:13 +08:00
@realpg
大神不要这样 情何以堪
顺便问一下有什么工具推荐吗? 看了一下 pt-archiver 似乎还行,不知道有没有更好的?还是一般自己写脚本?
realpg
2015-09-14 12:47:28 +08:00
@mulog
MYSQL 的单表查询性能比较差的,所以分表都成基本技能了,只要做一些数据量会大一点的东西,基本大多数会涉及分表。
coder2cooker
2018-01-08 16:16:21 +08:00
数据迁移过程中存在频繁的删除,是否会导致表空间的浪费以及查询索引效率的降低?

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

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

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

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

© 2021 V2EX