什么是 OLTP 和 OLAP ?
下面是一份 最清晰、最易理解 的 OLTP 与 OLAP 区别与用途讲解(适用于实际工作、数据库设计、数据仓库、业务系统)。
OLTP = Online Transaction Processing
👉 在线事务处理系统
你每天用的业务系统,99% 都是 OLTP,比如:
- App 登录、下单
- 后台管理系统
- ERP、CRM
- 金融支付、交易
- 电商订单系统
- 用户账号系统
OLTP 主要特点:
| 特性 | 说明 |
|---|---|
| 大量小事务 | insert/update/delete 非常频繁 |
| 强一致性 | 必须保证事务正确(ACID) |
| 响应时间极短 | 毫秒级响应 |
| 并发极高 | 大量用户同时访问 |
| 数据实时性高 | 立即读到最新数据 |
💡 本质:业务系统的实时读写数据库
常用技术:
- PostgreSQL、MySQL、Oracle
- Redis(缓存层)
- 索引优化、分库分表、主从复制
OLAP = Online Analytical Processing
👉 在线分析处理系统
你常见的 BI 分析系统、数据报表,大部分都是 OLAP:
- 数据仓库(DWH)
- 销售趋势分析
- 用户画像
- 经营分析大屏
- 大数据分析平台
- 离线报表
OLAP 特点:
| 特性 | 说明 |
|---|---|
| 大量读取 | 几乎不写,只读大数据 |
| 复杂查询 | 分组、聚合、窗口函数、统计分析 |
| 处理海量数据 | TB、PB 级 |
| 延迟允许 | 秒级、分钟级都可以 |
| 数据非实时 | T+1、小时级同步 |
💡 本质:用来分析历史数据的数据仓库
常用技术:
- ClickHouse
- Doris
- DuckDB
- Snowflake
- PostgreSQL(外部表)
- Spark、Hive
| 项目 | OLTP(业务库) | OLAP(分析库) |
|---|---|---|
| 目的 | 支撑业务 | 做分析 |
| 操作 | 少量读写 | 大量读取 |
| 事务 | 要求强事务 | 弱事务甚至无事务 |
| 查询 | 简单、走索引 | 复杂、全表扫描 |
| 响应 | 毫秒 | 秒级、分钟 |
| 数据量 | GB 级别 | TB~PB 级别 |
| 模式 | 3NF 设计,避免冗余 | Star Schema(维度模型) |
| 易变性 | 不断变化 | 不常变化,批量导入 |
两者不是互斥,而是配合使用。
因为 OLTP 是为实时业务设计的:
- 有大量索引(写入慢)
- 事务开销大
- 操作小而频繁
- 遇到大查询会堵业务 -> 悲剧
因此不能用 OLTP 做报表分析。
👉 典型事故:大 SQL 把业务库打爆。
因为 OLAP 是为分析设计的:
- 涉及列式存储
- 写入慢
- 事务弱
- 不适合频繁更新
所以也不能用分析库抗业务流量。
业务数据库 (OLTP)
│
▼
(CDC、Binlog、WAL、ETL)
▼
数据仓库 (OLAP)
│
▼
BI 报表
例如:
- PostgreSQL / MySQL -> ClickHouse / Doris
- PostgreSQL / MySQL s> Snowflake
- PostgreSQL -> TimescaleDB(时序 OLAP)
只问 3 个问题:
是 -> OLTP
否 -> OLAP
是 -> OLAP
否 -> OLTP
是 -> OLTP
否 -> OLAP
OLTP = 业务数据库 = 小事务 & 实时读写
OLAP = 分析数据库 = 大查询 & 批量分析