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