数据库: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 1
上 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 等。
|
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 也很快的 |