1
fhsan 2020-09-15 14:23:06 +08:00
读写分离,联合索引、字段冗余、缓存常用数据,可以应付
和 php 没啥关系,2000 万不算啥大数据 |
2
RickyC OP 哎, 哪里有教程...
|
3
aimaodeyuer 2020-09-15 15:16:45 +08:00
2000w 也不是很大的数据量,如果查询条件不是特别多,建立合理的索引也能 hold 住。如果条件筛选太多,没办法建索引的话就往 es 同步一份数据,查询都走 es 。
|
4
sadfQED2 2020-09-15 15:24:42 +08:00 via Android
才 2000 万数据,你看下慢日志,然后合理连索引就能搞定。再不行就升级机器,固态加上,内存加大,带宽加宽。。。。
最后的最后,实在不行了再考虑楼上说的,加 es,读写分离啥的 |
5
baiduyixia 2020-09-15 15:45:22 +08:00
@RickyC 看我名字
|
6
guruiqin 2020-09-15 15:48:54 +08:00
简单一点可以使用 mysql 分区(具体按照用户注册时间 或者其他进行分区)
这样如果查询覆盖分区的话那么数据量会少很多 |
7
RickyC OP @baiduyixia 两条腿走, 一直在百度, 谢谢
|
8
noahsophie 2020-09-15 16:08:58 +08:00
建议把问题具体化再去搜索,有针对性的搜索,这样提问题很难有合适的回答~
|
9
wysnylc 2020-09-15 16:10:37 +08:00
@baiduyixia #5 哈哈哈哈
|
10
someonedeng 2020-09-15 16:18:06 +08:00
有时候加个索引就能解决问题了,2000 不算非常大,但是 mysql 不建议这么大一个表吧= =,实在不行再分个区分个表啥的
|
11
kiracyan 2020-09-15 16:30:09 +08:00
2000 万慢的话不是没加索引就是单行数据过大吧
|
12
opengps 2020-09-15 22:51:35 +08:00 via Android
第一步,硬盘够快,物质基础才是第一步
第二步,简化查询条件,让查询尽可能都按照预期的索引执行 要并发查询,用多个实例进行读写分离 |
13
594duck 2020-09-16 06:15:38 +08:00 via iPhone
2000 万行,先看索引,在看查询一次要扫描多少行。
你的 mysql 什么配置,配置太低也不行。 |
14
butterfly1211 2020-09-16 09:06:06 +08:00
数据库中间件
|
15
zpfhbyx 2020-09-16 09:30:16 +08:00
@someonedeng 2000w 没必要上分区 分表吧。。现在的表 2c4G 下扛个大几 kw 没啥问题啊
|
16
someonedeng 2020-09-16 09:52:45 +08:00
@zpfhbyx 我手头上有个 1000 万没分的,某天瞄一眼变成 1 亿了 = =,不过这个还是得看做的什么,有些业务并不是对查询时间这么敏感,具体情况具体分析嘛
|
17
wangritian 2020-09-16 11:35:21 +08:00
吃透索引,亿级以内的数据查询很容易搞定,除非你只有 like %...%这一个条件
推荐一下极客时间的 mysql 实战 45 讲,非利益相关,纯粹觉得写的好 |
18
AmberJiang 2020-09-16 15:43:26 +08:00
2000 万还好吧 建议可以做索引
|
19
RickyC OP @fhsan
@aimaodeyuer @sadfQED2 @guruiqin @noahsophie @wysnylc @someonedeng @kiracyan @opengps @594duck @butterfly1211 @zpfhbyx @someonedeng @wangritian @AmberJiang 感谢各位, 目前通过添加一个联合索引, 提高了查询性能; 将查询速度从 8 秒提高到了大约 0.8 秒 目前还有一个问题, 就是并发的问题 假如很多用户同时进行相同的查询, 每个网页的打开速度还在 8 秒左右 20 进程测试:如果是不同查询, 性能就好; 如果是相同查询, 性能就差 所以各位有什么解决方法吗? |
21
RickyC OP |
23
opengps 2020-09-21 12:09:35 +08:00 via Android
数据库连接池配置了吗?
|
24
wangritian 2020-09-21 13:32:48 +08:00
@RickyC 并发测试的同时,观察一下 php 机器和 mysql 机器的 cpu 、内存、磁盘 IO 、网络 IO,可能的原因比较多,先排查一下
|