一天几 kw 条以上的数据量,应该用什么方法存放

2014-12-10 15:23:18 +08:00
 wuxiaolin
如题,简单的select id from table where date = '2014-12-10' group by ** 都跑不了,数据好像是太大了。
像一天这么大数据量的数据库,应该使用什么引擎比较好?
或者应该怎么存放数据会比较合理跟有利于查询的?
有没有人有经验的请教下
8848 次点击
所在节点    MySQL
36 条回复
learnshare
2014-12-10 15:27:29 +08:00
日志的话,丢到文件里。查找只能费点时间
xjliao
2014-12-10 15:30:27 +08:00
oracle的话 就按时间建表分区 然后根据时间条件查找某个表分区里的记录
xiaogui
2014-12-10 15:32:28 +08:00
这些东西,不适合保存在数据库。
wuxiaolin
2014-12-10 15:34:32 +08:00
@learnshare @xiaogui 放文件里面不方便做聚合,比较麻烦处理
winnie2012
2014-12-10 15:34:59 +08:00
1k/每行 * 10,000,000 行 = 10G 数据量,1个月300G,1年 3T 多数据
这是什么数据,怎么会这么多啊?
如果是要求查询快速,分布式存储和分布式计算是少不了。
winnie2012
2014-12-10 15:36:45 +08:00
建议看看:rethinkdb 之类的分布式数据库
wuxiaolin
2014-12-10 15:38:53 +08:00
@winnie2012 广告类的浏览日志,好,谢谢,我看看能不能解决
winnie2012
2014-12-10 15:39:36 +08:00
然后,硬盘换成 SSD 固态硬盘,各子结点之间网络带宽要求能保证。
stranbird
2014-12-10 15:40:47 +08:00
HDFS
xiaogui
2014-12-10 15:46:35 +08:00
日志保存成文件,然后后台程序跑日志文件生成统计数据。
laven
2014-12-10 15:50:05 +08:00
扔hadoop,使用mapreduce
learnshare
2014-12-10 15:57:17 +08:00
@wuxiaolin 大量的日志不应该丢到应用数据库里,严重拖慢速度
wuxiaolin
2014-12-10 15:58:48 +08:00
感谢上面的所有朋友
@xiaogui 汇总的话试过,重复过滤不明显,所以用不了这种方案
目前我们这些日志主要存放1-2个月左右,不会永久存放,我了解下大家提供的,看看适用不
现在主要由于一天数据量太大,sql读不出数据
lbp0200
2014-12-10 16:01:41 +08:00
mongodb简单,可靠
heaton_nobu
2014-12-10 16:02:36 +08:00
按日期分表
查询之前索引做好
读写分离
xiaogui
2014-12-10 16:05:11 +08:00
重复过滤?想要什么数据,就用程序跑就好了。基本跑完的原数据是可以删掉的。
cye3s
2014-12-10 16:07:48 +08:00
hadoop呗,hive做统计,hbase快速查询
wuxiaolin
2014-12-10 16:08:40 +08:00
@xiaogui 我们这块的数据要统计到独立ip,之前试过按ip进行汇总过滤重复ip的数据,一天也有3kw+的数据。数据量还是比较大
tigerstudent
2014-12-10 16:20:53 +08:00
你的date字段真的是用字符串保存的?
xfwduke
2014-12-10 16:29:13 +08:00
其实也没那么夸张
从 lz 的 sql 来看, 会先用日期收敛结果, 所以实际对象只有 kw 级别

1. 如果查询场景(也就是 sql 的类型) 不多, 可以针对性的建索引优化
2. 但是由于怎么说都是聚合查询, 频率肯定不能过高, 否则 DB 机器的 CPU 会很高

实测:
1. 1.2亿记录的表
2. 125G 数据量

select zone_id, count(*) from log_2014_11 where id_1 = 32 group by id_2;
+---------+----------+
| id_2 | count(*) |
+---------+----------+
| 1 | 4983336 |
| 2 | 3628759 |
| 3 | 120960 |
+---------+----------+
3 rows in set (9.47 sec)

id_1, id_2 是一个联合次级索引的头两个字段, 速度不算很快, 但也不算很慢

环境
1. MySQL 5.5
2. Innodb
3. 32G 内存, SSD
4, 16G buffer pool

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

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

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

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

© 2021 V2EX