关于很多人说“MySQL 1 亿条数据统计轻轻松松”,确实超出我的认知。可以请各位大神发一下你们的“轻松”的标准跟扫描的数据量嘛?

2024-01-13 20:46:51 +08:00
 RangerWolf

在之前的一个帖子 https://www.v2ex.com/t/1007852 的讨论引申出的另外一个话题

我说说我的环境:

统计 SQL:

select sum(cost)
from table_name

统计全表的 cost 字段的总和

反正跑了 20s 是没有跑完的。相同的查询在 Clickhouse 跑了 12s ( clickhouse 的配置也不高,而且也是单机环境,非分布式)

想看看各位大神的环境与配置,以及统计的 SQL 大概是什么

如果各位的“轻松”的条件是用索引极大的减少了扫描的数据量,那感觉就不是一个话题了

12579 次点击
所在节点    数据库
85 条回复
jeesk
2024-01-14 12:56:20 +08:00
没有相同的条件,然后不同的人会得出不同的结论.

你说的上亿的数据? 机器什么配置? 磁盘,cpu ,内存, 等等. 我个人觉得网络上的评论多数是不能信的, 还是要自己实践.


就像 windows 有说卡一样, 1 个人还在用 8 代低压 cpu 的笔记本,另外一个人用上 13 代 i9 cpu. 1 个人说卡的要死, 另外一个说流畅的要死? 怎么评价? 他们说的都是真话.
iyaozhen
2024-01-14 13:49:29 +08:00
哥,谁叫你全表 count/sum 呀,不加 where 就是很慢

数据库场景分两种,oltp 、olap ,简单来说就是 oltp 主要是 select * from table where id = xxx ,1 亿肯定没啥问题。olap 就比较看场景了,比如统计一天的 pv 、uv ,select count(*) as pv, count(distinct user_id) as uv from table where `date_day` = '2024-01-01' 这样也行,好几千 w 的表也可以秒出,如果 where 条件不能命中索引就麻烦了
MySQL 是通过不同存储引擎来分别支持两种场景,但实际情况是两种场景我们都有,这就出来了 tidb 这种 newsql ,两种都支持的比较好

我实际搞过,当然公司不缺资源,100C 256G 3T SSD
allenzhangSB
2024-01-14 14:31:02 +08:00
@adoal #18 方便同样的数据用 MySQL 再跑一遍吗
makerbi
2024-01-14 15:40:24 +08:00
@W3Cbox #31 爬虫 + 数据分析的 SaaS 很容易就上亿了
LeeReamond
2024-01-14 16:48:09 +08:00
@wudaye 也不至于非得千万级用户,你一个用户一共才产生 10 条数据?你稍微有点详细业务需求,数据量比用户高两三个数量级也正常,这还是单业务。

@june4 你这写的给我说乐了, 走唯一索引当然索引不耗时,B+树能耗什么时?你整个查询时间什么情况,行数增长和查询时间增长不是线性关系,另外跟你表内数据量也有关系,你所有自我感觉良好的数据结构全都不复杂。我原文写的“没一个能用的”,你要是没看懂你可以再看一遍,还是你最后压测单机 qps 跑个一两百就叫能用了?我写的就是有的程序员对响应速度也没要求,对流量也没要求,业务跑完就叫“够用”,“凯瑞起来毫无压力”
litguy
2024-01-14 17:36:17 +08:00
GP3 的性能感觉不太行
虽然一个 NVME 盘性能都可以爆掉它了
可能那些用户配置和你不一样
hefish
2024-01-14 17:39:00 +08:00
php 是最好的语言,没有之一。
Foxkeh
2024-01-14 17:43:35 +08:00
请问主题里这个场景里所有的 cost 字段都是动态的吗?有没可能按照时间区间或者其他维度定期计算然后只做累加?
icy37785
2024-01-14 18:31:00 +08:00
@W3Cbox #30 我的个人项目手机百度网盘的分享链接做搜索,数据都是以亿为单位了。以前数据上亿少很多就是因为性能问题比较省,真放开手来,很多类型的数据都是很容易过亿的。
Terry166
2024-01-14 20:12:07 +08:00
既然是在 AWS 上,可以试试 Snowflake ,AWS 上的数据仓库平台,把数据库文件导入 Snowflake ,查询的时候会自动横向扩展提升查询效率,查询包含 1000 亿条数据的表也只需 10 秒左右的时间。
nnegier
2024-01-14 21:16:38 +08:00
@j1132888093 #4 在这样的环境下为什么索引快呀? 1 亿条
me1onsoda
2024-01-14 21:21:01 +08:00
有没有可能你配置太抠了
phli
2024-01-14 21:30:01 +08:00
@W3Cbox 我这一天就能上亿。
RangerWolf
2024-01-14 21:48:47 +08:00
@Terry166
@me1onsoda 穷人小项目 RDS 已经嫌贵了
RangerWolf
2024-01-14 21:51:20 +08:00
@miniliuke 也想转试试看,老项目的路径依赖比较强一点,新项目可以试试看
coinbase
2024-01-15 07:48:06 +08:00
pg 是最好的语言,没有之一。
Narcissu5
2024-01-15 09:01:35 +08:00
OLAP 的角度来讲,20S 可能真的不算慢,我司之前的大数据开发用 hive ,随便一个查询至少两三分钟
rickiey
2024-01-15 09:26:05 +08:00
云存储应该有 iops 限制
crazycarry
2024-01-15 09:28:11 +08:00
70 亿的三个表。。只能索引查询。。。
jowan
2024-01-15 10:17:00 +08:00
你这里是 count 全表,除非是业务统计需要,我们的投放平台监测链接和媒体回传表几十亿,业务上要做取舍,和淘宝京东类似,你检索结果几百万但最多只给你展示前 N 页。根据那个帖子的介绍,在以插入和简单查询为主的场景下 MySQL 完全够用,确实轻轻松松。而且我们还有复杂的统计查询,不过业务上都是要求带时间范围,比如最大时间跨度不能超过 3 个月,等等。

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

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

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

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

© 2021 V2EX