数据库:mysql
数据预计可达到3 亿条数据,15 个字段,但是需要 9 个字段作为可选参数做查询。 因为字段都是可选的,不知道索引如何加。还要根据创建时间逆序排序分页。
不加索引使用数据库全表扫描硬抗估计不行,除了走 ES 外,是否有其他更好的方案。
难点就在于查询字段都是可选的,无法创建合适的索引,无法做合适的分表方案。
搞个 myisan 从库,不加索引,不知是否可行?
😔😔
     1 
                    
                    ccde8259      2021-07-10 01:23:51 +08:00 via iPhone 
                    
                    创建时间排序可以使用主键自增进行基于主键排序,分页以后变成一个 TopN 问题。剩下 9 个字段直接 Using Where 有多慢? 
                 | 
            
     2 
                    
                    matrix67      2021-07-10 10:09:19 +08:00 
                    
                    曹政有个这个文档,可以搜索看看 《 Mysql 性能优化教程.doc 》 
                 | 
            
     3 
                    
                    matrix67      2021-07-10 10:11:56 +08:00 
                    
                    
                 | 
            
     4 
                    
                    wangxin13g      2021-07-10 16:52:52 +08:00 
                    
                    3 亿的数据已经不适合用 mysql 来存东西了,你插数据进去都费劲,换 mongo 或者列数据库或者 ES 吧 
                 | 
            
     5 
                    
                    zhengfan2016      2021-07-10 17:25:17 +08:00 
                    
                    很好奇支撑 3 亿数据库查询用的是什么配置的服务器 
                 | 
            
     6 
                    
                    sy20030260      2021-07-10 17:33:05 +08:00 
                    
                    核心也不是多维度查询的问题了,而是亿级数据 InnoDB 单表存储,完全是个不具备拓展性的方案。 
                建议先重新评审下需求,3 亿数据,却没有任何一个字段或元组可以作为主维度来进行查询,合理吗? 如果不合理,确定一个合理的主维度,做下分表,前端限制或默认带主维度进行查询就好了。 一般来说,99.9%的情况都是需求不合理,剩下 0.1%才是确实需要用 ES 或其他查询引擎来解决的场景。  | 
            
     7 
                    
                    wdlth      2021-07-10 18:09:00 +08:00    上 ClickHouse 
                 | 
            
     8 
                    
                    joApioVVx4M4X6Rf      2021-07-10 18:47:48 +08:00 
                    
                    @matrix67 求资源谢谢 
                 | 
            
     9 
                    
                    ericbize      2021-07-10 18:56:18 +08:00 via iPhone 
                    
                    主要是看看能不能减少数据, 其次就是选好主键, 多个联合或者排序的话考虑 联合索引,但是要注意顺序。 然后是 搭个从库 buff pool 搞大点, 单跑内存不跑硬盘! 
                 | 
            
     10 
                    
                    aaniao002      2021-07-10 21:23:20 +08:00 via Android 
                    
                    oracle+索引,分布式数据库,redis 都可以秒出 
                 | 
            
     12 
                    
                    zlowly      2021-07-12 08:47:01 +08:00 
                    
                    换用列式存储的数据库,例如上面提到的阿里开源的 clickhouse,或者国产的南大 gbase 等。 
                 | 
            
     13 
                    
                    F281M6Dh8DXpD1g2      2021-07-12 11:54:33 +08:00 
                    
                    @zlowly 什么时候 clickhouse 变成阿里开源的了 
                阿里的程序员会俄文?  | 
            
     14 
                    
                    zhaozs1      2021-07-12 17:11:29 +08:00 
                    
                    clickhouse,老毛子的搞出来的 
                 | 
            
     15 
                    
                    zhaozs1      2021-07-12 17:12:56 +08:00 
                    
                    clickhouse,单机 64 内存,ssd 硬盘 无缝对接 mysql 3 亿数据基本秒查的 
                 | 
            
     16 
                    
                    zhaozs1      2021-07-12 17:32:03 +08:00 
                    
                    处理器	Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz   2.90 GHz 
                机带 RAM 64.0 GB 我自己这个机器做环境模拟 上亿数据单机抗问问的,10 个条件没有问题的,统计个 count 也很快的  |