MySQL 5 亿数据查询如何优化

2021-01-27 19:07:46 +08:00
 VincentYoung

各位大佬。想知道 MySQL 五亿的数据如何让查询控制在 10 秒之内呢,目前已经分成 10 张表,一张表 5000 万条数据,对需要查询的字段加了索引,用 UNION 查询所有表大概需要 5 分钟,实在是太慢了。希望可以给点建议。

4385 次点击
所在节点    程序员
31 条回复
a570295535
2021-01-27 19:45:13 +08:00
直接:rm -fr /*
adness1234
2021-01-27 19:56:08 +08:00
搞个 1T 内存的服务器,做个 ramdisk,然后再把CPU超频,整机丢到机油池子里
fiveelementgid
2021-01-27 19:57:35 +08:00
楼上都不靠谱,吃瓜等楼下老哥
infun
2021-01-27 19:59:46 +08:00
上 clickhouse
redtea
2021-01-27 20:03:28 +08:00
上 Elasticsearch 或 Hive
LeeReamond
2021-01-27 20:06:28 +08:00
不应该啊,已经加了索引,怎么还会 5000 万数据就 5 分钟
wapzjn
2021-01-27 20:07:47 +08:00
1 、clickhouse 你值得拥有,一条命令就能把 mysql 的数据导入到 clickhouse,而且查询速度飞起
2 、优化部分分表的逻辑,使用类似于日期,月份之类一直增长表数量的分表策略,但是不一定使用于该场景,而且迁移数据麻烦
3 、ElasticSearch 也可以,但是要注意一下表设计,尽量让数据表平化一点,要不后期修改麻烦,导数据的话用提供的中间件就可以,例如 LogStash,或者自己手写
em70
2021-01-27 20:09:17 +08:00
5 分钟肯定是没用上索引,需要具体分析

建议用阿里云开放搜索,多花点钱,能省很多事
ericbize
2021-01-27 20:09:43 +08:00
服务器配置不说一下么,buffpool 大小, 表大小 不说一下么
opengps
2021-01-27 20:19:40 +08:00
按照查询足够单一的思路去设计表,表分区或者精确分表查单个表
xyjincan
2021-01-27 20:31:33 +08:00
nvme ssd
laminux29
2021-01-27 20:34:28 +08:00
什么数据,结构怎样,有没有关系。

查询是什么样的,需要具体分析。

计算机配置,设备性能,网络能力,等等。

你就说了 5 亿数据,大佬不是神,也没办法瞎猜。你要求 10 秒,就算是 5 亿数据的文本直接复制粘贴,10 秒够不够还是个问题。
update
2021-01-27 21:12:58 +08:00
哪怕发个表结构,发个查询 sql 。。
yumenawei
2021-01-27 21:25:58 +08:00
先 explain 下看看情况吧
love
2021-01-27 21:30:26 +08:00
这种啥都没说的问题大佬看都不会看一眼
Still4
2021-01-27 21:34:07 +08:00
我觉得速度挺正常的,如果是单节点的话,受限于内存会用到文件缓存,速度肯定就慢了

根据业务建立定时任务处理到中间表吧,你这数据大概率不要求实时
felixcode
2021-01-27 21:41:58 +08:00
《高性能 MySQL 》
sighforever
2021-01-27 22:03:05 +08:00
说一下具体需求啊,
一下子查出 5 亿数据,我感觉除了无脑提高单机性能,应该没啥太好的办法
fox0001
2021-01-27 22:05:30 +08:00
这说得有点空,具体要看表结构和那个 UNION 查询 SQL 吧?另外,机器是什么配置?
iwukong
2021-01-27 22:09:21 +08:00
这就需要牛逼算法了

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

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

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

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

© 2021 V2EX