大数据量联表操作

2024-07-30 14:09:27 +08:00
 ModiKa2022

公司现在的业务, 总会涉及到连表操作, 百万级的数据, 一联表, 查询会变得的缓慢. 例如订单, 收货单, 入库单, 退货单, 验收单 数据一直在写入 如果涉及到这种情况, 除了冗余存储数据外, 还有什么其他的解决方案吗? 诚恳的咨询下各位

4617 次点击
所在节点    数据库
64 条回复
simen513
2024-07-30 18:18:54 +08:00
最常用的做法是:

特大数据量的表,按时间做 partition 分表。
查询时分时段查询,再汇总到周、月、年,一级一级汇总。
ModiKa2022
2024-07-30 19:08:53 +08:00
@thinkwei2012 冗余数据,涉及到很多逻辑上的处理, 对每个列表都要单独冗余数据, 系统比较大, 涉及的查看页面有些多
ModiKa2022
2024-07-30 19:10:38 +08:00
@simen513 挺好的思路, 现在的问题是, 每个独立的表都是单独的单子,时间是独立的, 如果按照时间分表, 逻辑上很多 join 不好处理
kestrelBright
2024-07-30 20:20:30 +08:00
这种上 es 吧
jjx
2024-07-30 20:27:47 +08:00
erp 很难

表现在客户查询条件巴不得每个字段都可以用来查询

报表页面必须有小计总计, 使得优化困难

数据一定要实时性, 高度要求数据正确

数据查看需要各种制约,比方说按地区/员工/合作伙伴/部门等等, 不得不联表

当然,这些还仅仅是 erp 变态需求中的一部分
volvo007
2024-07-30 22:29:51 +08:00
我一直以为是我使用数据库的方法有问题,原来大家也都会遇到类似的问题。不过这里想问问,所谓的查询速度快是多快呢?

对于内部用户,我认为百万级的多个表关联(例如 10 张表),返回 100 条以内的数据的响应时间在 3 秒内算是可以接受。如果面向 toB 用户,那么秒级差不多;而面向 toC 用户,大概要在 100 ms 这个水平?
flxaq
2024-07-31 00:57:24 +08:00
先看你 pg 硬件配置,我们公司一个表几亿的,pg 连几十个表没什么问题,ssd 的还要做好数据库参数优化,要改成适合 ssd 的参数,让 sql 能走合理的索引,连表关键要看索引是否合理,对应表要看具体业务场景,有时间纬度的可以按时间分区。数据库内存 等参数要合理分配
feifan19
2024-07-31 08:51:16 +08:00
分库分表,数据缓存,读写分离之类的没什么好说的,
提供一种冷热分离的思路,我们项目中每天凌晨会有一个定时任务,把 7 天前的交易数据压缩为 zip 上传到 Blob 上
7 天内的数据自动查 DB 表,7 天以前的数据都会从 Blob 上下载下来读取到内存后再返回给前台画面
Blob 速度也挺快的,目前系统一切都很正常
lyusantu
2024-07-31 09:04:40 +08:00
PG 百万数据就卡不应该吧 EXPLAIN 一下看看优化优化
iamzcr
2024-07-31 09:19:13 +08:00
百万就卡,要不先看看执行计划?
yiyufxst
2024-07-31 09:23:13 +08:00
我们 PG 大表(千万、亿级)连太慢,现在说把 PG 同步到 Starrocks ,SR 大表关联性能还可以,缺点是他复杂查询性能好,简单查询不如 PG 、MySQL 这种关系型数据库
lpn666
2024-07-31 09:33:54 +08:00
flink cdc 然后 join ,最后吧结果数据写到 es 。转批处理为流处理,upsert 保证数据一致性。 后台查询 es 大表,保证实时。
yjfkk
2024-07-31 10:25:42 +08:00
这不是搜索典型应用场景吗?上 ES
ModiKa2022
2024-07-31 11:12:29 +08:00
@jjx 现在就是把公司原有的 ERP 功能, 替代掉, ERP 更改总是要找外包处理, 现在在肢解原有的 ERP 系统
ModiKa2022
2024-07-31 11:13:13 +08:00
@volvo007 主要是 TOB, 查过 1s 的话, 前端会有明显的卡顿
ModiKa2022
2024-07-31 11:14:52 +08:00
@flxaq 有几张过亿的表, 那是一点儿都不敢连表, 稳定崩的, 现在是好几张百万级的表在关联查询, 卡顿很明显
ModiKa2022
2024-07-31 11:15:42 +08:00
@flxaq pg 使用的是阿里云, 运维那边的预算有限, 现在主要想的是后端的优化方案
ModiKa2022
2024-07-31 11:18:27 +08:00
@feifan19 业务上的时效性, 感觉跟你们的不太一样, 一个订单 可以一个月之前下单, 然后下个月才能到达(供应链上的业务, 可以提前很久下单的), 如果单纯的按照几天之前的数据分割, 不满足业务的需求
ModiKa2022
2024-07-31 11:19:04 +08:00
@lyusantu 好几张百万级别的表关联查询
ModiKa2022
2024-07-31 11:19:10 +08:00
@iamzcr 好几张百万级别的表关联查询

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

https://ex.noerr.eu.org/t/1061170

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

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

© 2021 V2EX