MySQL 单表 2000 万条数据, 如何提高 筛选查询 和 多用户并发查询 的性能 ?

2020-09-15 14:20:16 +08:00
 RickyC
MySQL 单表 2000 万条数据, 如何提高 筛选查询 和 多用户并发查询 的性能 ?
网上有没有 Step by Step 的详细教程?
使用 PHP 语言, 我以前也只有 PHP 等经验, 没有大数据处理经验.
3424 次点击
所在节点    MySQL
24 条回复
fhsan
2020-09-15 14:23:06 +08:00
读写分离,联合索引、字段冗余、缓存常用数据,可以应付
和 php 没啥关系,2000 万不算啥大数据
RickyC
2020-09-15 14:40:13 +08:00
哎, 哪里有教程...
aimaodeyuer
2020-09-15 15:16:45 +08:00
2000w 也不是很大的数据量,如果查询条件不是特别多,建立合理的索引也能 hold 住。如果条件筛选太多,没办法建索引的话就往 es 同步一份数据,查询都走 es 。
sadfQED2
2020-09-15 15:24:42 +08:00
才 2000 万数据,你看下慢日志,然后合理连索引就能搞定。再不行就升级机器,固态加上,内存加大,带宽加宽。。。。


最后的最后,实在不行了再考虑楼上说的,加 es,读写分离啥的
baiduyixia
2020-09-15 15:45:22 +08:00
@RickyC 看我名字
guruiqin
2020-09-15 15:48:54 +08:00
简单一点可以使用 mysql 分区(具体按照用户注册时间 或者其他进行分区)
这样如果查询覆盖分区的话那么数据量会少很多
RickyC
2020-09-15 15:51:52 +08:00
@baiduyixia 两条腿走, 一直在百度, 谢谢
noahsophie
2020-09-15 16:08:58 +08:00
建议把问题具体化再去搜索,有针对性的搜索,这样提问题很难有合适的回答~
wysnylc
2020-09-15 16:10:37 +08:00
@baiduyixia #5 哈哈哈哈
someonedeng
2020-09-15 16:18:06 +08:00
有时候加个索引就能解决问题了,2000 不算非常大,但是 mysql 不建议这么大一个表吧= =,实在不行再分个区分个表啥的
kiracyan
2020-09-15 16:30:09 +08:00
2000 万慢的话不是没加索引就是单行数据过大吧
opengps
2020-09-15 22:51:35 +08:00
第一步,硬盘够快,物质基础才是第一步
第二步,简化查询条件,让查询尽可能都按照预期的索引执行
要并发查询,用多个实例进行读写分离
594duck
2020-09-16 06:15:38 +08:00
2000 万行,先看索引,在看查询一次要扫描多少行。

你的 mysql 什么配置,配置太低也不行。
butterfly1211
2020-09-16 09:06:06 +08:00
数据库中间件
zpfhbyx
2020-09-16 09:30:16 +08:00
@someonedeng 2000w 没必要上分区 分表吧。。现在的表 2c4G 下扛个大几 kw 没啥问题啊
someonedeng
2020-09-16 09:52:45 +08:00
@zpfhbyx 我手头上有个 1000 万没分的,某天瞄一眼变成 1 亿了 = =,不过这个还是得看做的什么,有些业务并不是对查询时间这么敏感,具体情况具体分析嘛
wangritian
2020-09-16 11:35:21 +08:00
吃透索引,亿级以内的数据查询很容易搞定,除非你只有 like %...%这一个条件
推荐一下极客时间的 mysql 实战 45 讲,非利益相关,纯粹觉得写的好
AmberJiang
2020-09-16 15:43:26 +08:00
2000 万还好吧 建议可以做索引
RickyC
2020-09-21 11:06:17 +08:00
@fhsan
@aimaodeyuer
@sadfQED2
@guruiqin
@noahsophie
@wysnylc
@someonedeng
@kiracyan
@opengps
@594duck
@butterfly1211
@zpfhbyx
@someonedeng
@wangritian
@AmberJiang

感谢各位, 目前通过添加一个联合索引, 提高了查询性能; 将查询速度从 8 秒提高到了大约 0.8 秒

目前还有一个问题, 就是并发的问题

假如很多用户同时进行相同的查询, 每个网页的打开速度还在 8 秒左右

20 进程测试:如果是不同查询, 性能就好; 如果是相同查询, 性能就差

所以各位有什么解决方法吗?
kiracyan
2020-09-21 11:25:32 +08:00
@RickyC 相同查询很慢? 不同查询很快?

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

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

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

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

© 2021 V2EX