跳到主内容
快讯直播
AI智模界
AI 词典

OLTP vs OLAP:一个负责记账,一个负责算账

一句话定义:OLTP(Online Transaction Processing,联机事务处理)关注把每一笔业务准确、快速地办理完成;OLAP(Online Analytical Processing,联机分析处理)关注把海量历史业务汇总起来,观察规律和趋势。

先打个比方。超市收银台就是 OLTP:扫一件商品、扣一次库存、收一笔钱,每笔操作都很小、很快,而且绝对不能出错,也不能丢失。老板年底让财务把一整年的流水拉出来,算哪个品类卖得最好、周末和工作日客流差多少,这就是 OLAP。两者其实是同一批数据的两个方向:一个往前写,一个往回看。它们对系统的要求几乎相反:

维度OLTPOLAP
典型动作下单、支付、改地址、查订单汇总、分组、同比环比、趋势
单次涉及数据几行几十万行到几十亿行
响应预期毫秒级秒到分钟,能等
并发形态大量用户同时发小请求少量人跑大查询
数据状态当前最新值,随时在变历史快照,批量导入
优化方向事务、索引点查、行式存储列式存储、并行扫描、压缩

和相邻概念的区别:OLTP 所在的位置,一般就是“业务库”,是事实发生的地方;OLAP 通常落在数据仓库、数据集里,是事实被回看的地方。两者之间靠 ETL 或 CDC(变更数据捕获)搬运数据。近年也有 HTAP(混合事务分析处理)想在一套系统里兼顾两边,但代价通常是两边都不极致,选型时要清楚自己主要承受的是哪一侧压力。

为什么 AI 应用别直接在业务库上跑重查询:这是实践中最常见的坑之一。一条不带好索引的 GROUP BY 全表扫描,会把磁盘 IO 和 CPU 占满,前台用户的下单就开始转圈;大查询还会长时间占用连接池,把连接数吃光,相当于收银台前全被一个搬货的人堵住;反复的相似查询还会把缓存里的热数据挤出去,让原本很快的查询变慢。再加上给分析脚本开一个高权限账号,误删误改的风险也实打实存在。

比较稳妥的做法是:业务库只负责写和点查,把数据通过 CDC 或定期同步复制到只读副本、分析库或离线数仓,重查询和模型训练在那里跑;向量检索的 embedding 也放在专门的向量索引里,别塞进业务表。以各产品官方文档为准,具体同步方案和参数要看自家情况。

对从业者的意义:判断一个需求是“记账”还是“算账”,选型、建索引、限流、分库分表的决策基本就有依据了。对普通人的意义:月底报表为什么慢、为什么促销当天不能随便跑大数据,答案往往就在这条线上。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。