一.数据库三大业务负载
数据库的业务负载直接决定后续存储模型和压缩方式的选择,不同负载的查询特性、读写比例差异显著,因此需要针对性适配,这也是三大负载分类出现的核心原因。
1.OLTP(在线事物处理)
(1)核心定义
面向日常在线交易、短事务、高频随机读写的业务场景,互联网后端、电商、支付、进销存、银行系统均属于这类。
(2)负载特征
读写占比:读写混合,写入请求频繁;
事务特点:事务短小(执行毫秒级)、并发极高、大量随机 IO;必须严格满足 ACID 事务特性;
访问模式:绝大多数操作都是单行 / 少量行增删改查(比如下单、扣库存、查用户余额),极少大批量扫描整张表;
性能关注点:事务吞吐 TPS、锁竞争、响应延迟、并发控制、行级锁效率。
(3)典型业务
电商下单、微信聊天消息、银行卡转账、外卖订单、用户账号系统
(4)优缺点
- 优点:响应速度快,能支撑高并发交易,适配实时业务场景,操作逻辑简单,易于实现和维护。
- 缺点:不适合大规模统计分析,若用于OLAP场景,会产生大量无效I/O,查询效率极低。
2.OLAP(在线分析处理)
(1)核心定义
面向海量历史数据统计、多维报表、大数据分析、离线计算,用于企业经营决策,不处理在线实时交易。核心是处理“复杂分析”,特点是操作耗时久、查询逻辑复杂,需要扫描数据库的大部分数据,用于从大量数据中提取有价值的信息。
(2)负载特征
读写占比:几乎以大批量只读查询为主,数据写入多是批量定时导入(凌晨同步业务数据);
查询特点:SQL 语句复杂,多表关联、聚合计算(sum/count/avg)、全表大范围扫描,查询耗时秒~分钟级;
无事务要求:不需要强 ACID,更看重海量数据下的聚合计算速度;
存储特点:数据体量极大(TB/PB 级),数据极少修改(一次写入多次读取),按时间分区存储。
(3)典型业务
电商月度销售额报表、用户行为画像、财务年度对账、网站流量大盘统计
(4)优缺点
- 优点:分析能力强,能高效处理大规模数据的聚合、统计查询,支撑企业决策,读取大量数据时的I/O效率高于OLTP适配的存储方式。
- 缺点:单行查询(点查询)速度慢,写入操作繁琐、效率低,无法支撑实时交易场景。
3.HTAP(混合事务分析处理)
(1)核心定义
一套数据库同时承载 OLTP 在线事务 + OLAP 数据分析 两种负载,打破传统 TP 和 AP 必须两套系统分开部署的架构。
(2)负载特征
同一套集群:白天承接线上用户下单、查询等实时事务(TP 负载);同时可直接基于最新业务数据做实时统计分析(AP 负载),无需提前把数据同步到数仓;
底层存储一般采用行列混合存储:行存满足单行随机读写,列存满足批量聚合查询;
兼顾事务 ACID 和海量数据分析性能,资源隔离避免分析大 SQL 拖垮在线业务。
(3)典型业务
实时大屏、新零售实时库存分析、金融实时风控、实时营销推荐
4.三大负载核心对比表
二.三大核心存储模型
当下所有数据库底层存储架构,归根结底分为行存储、列存储、行列混合存储三类,分别对应 OLTP、OLAP、HTAP 三大业务负载,二者是一一匹配关系。
1.行存储
(1)存储规则
把一整行的所有字段数据连续存放在磁盘相邻位置,一行数据作为最小存储单元。
(2)核心优缺点
优势:
单行读写极快:查询一整条用户所有信息、插入 / 更新单条数据,只需一次磁盘 IO,效率极高;
事务友好:支持行级锁、频繁增删改,完美适配事务场景;
适配随机读写,数据频繁修改场景。
劣势:
聚合统计极慢:比如只算所有人平均年龄,依然要把每行全部字段读取出来,大量无效 IO;
压缩率低:每行字段类型混杂,压缩空间有限。
(3)适用场景
适配:OLTP 在线事务业务(电商订单、用户系统、支付)
2.列存储
(1)存储规则
将同一个字段的全部数据,连续集中存放,以字段列为最小存储单元。
(2)核心优缺点
优势:
大数据量聚合查询碾压行存:统计平均年龄,只需要读取 age 一列,不用加载其他无关字段,IO 开销大幅降低;
压缩效率极高:同一列数据类型完全一致(比如 age 全是数字),可做到极致压缩,节省磁盘空间;
海量历史数据只读场景性能拉满。
劣势:
单行查询、频繁更新极慢:修改一条用户数据,需要去每一列分别修改,IO 开销巨大;
不适合频繁写入、随机修改,事务支持薄弱。
(3)适用场景
适配:OLAP 数据分析、数据仓库(报表统计、流量分析、用户画像)
3.行列混合存储
(1)存储规则
一套数据库底层同时具备行存储 + 列存储两套引擎,数据可双副本保存:
热点最新数据:用行存存放,承接线上实时事务读写;
历史冷数据:自动转为列存存放,用于实时数据分析;
两种存储格式无缝切换、数据实时互通。
(2)核心优缺点
优势:
一套集群同时支撑 OLTP+OLAP(也就是 HTAP 混合负载);
在线下单业务不卡顿,同时可以基于最新数据做实时大屏、风控分析;
冷热数据分层,兼顾读写延迟与存储成本。
劣势:
架构复杂,底层实现难度大,数据库研发成本高。
(3)适用场景
适配:HTAP 混合业务(实时风控、新零售实时库存、业务实时大盘)
4.三大存储模型对比表
三.数据库数据压缩技术
1.压缩核心价值
- 节省磁盘存储空间:列式存储压缩率可达 5~20 倍,行存一般 2~4 倍,大幅降低硬件成本;
- 减少磁盘 IO 开销:磁盘读写的数据量变小,查询、扫描速度提升;
- 网络传输更快:数据备份、主从同步、节点间数据迁移流量降低;
- 代价:CPU 算力消耗增加,属于 CPU 换 IO 的取舍。
2.压缩粒度(四种级别)
(1) Block-level 块级压缩(页面级压缩)
把同一个表内连续一整块磁盘数据(数据块 / 数据页)作为整体压缩单元;
一个 Block 里包含几十~上百条行记录(tuples),是行存数据库最主流的压缩方式。
核心特点
- 压缩粒度适中:一块内数据有冗余,压缩效果均衡;
- 增删改友好:修改某一行只需加载对应数据块,解压整块、修改后重新压缩回块;
- 兼容事务、行锁,OLTP 在线业务标配;
(2)Tuple-level 元组级 / 行级压缩
tuple = 数据库一行记录;以单独一整行数据为最小压缩单元,每行独立压缩、独立存储。
核心特点
- 粒度最细:修改任意一行,只需要解压、重压缩当前这一行,互不影响其他行;
- 缺点极大:单行数据字段混杂、数据量太小,内部冗余极少,压缩率最差;每一行都要附带压缩头部信息,额外存储开销高;
局限
工业界主流数据库几乎不用,仅老旧轻量嵌入式数据库会采用。
(3)Attribute-level 属性级 / 字段级压缩
attribute = 字段 / 列;针对单条行内的某一个(或多个)单独字段做压缩,不是整行、整块压缩。
核心特点
- 按需压缩:只压缩占用空间大的字段,小字段不压缩,兼顾读取速度与存储空间;
- 精准减负:不会因为压缩小字段浪费 CPU 算力;
(4)Column-level 列级压缩
DSM 列式存储专属:把成千上万行里同一个字段的全部值聚拢在一起,整体压缩。也就是把一整列海量数据作为压缩单元。
核心特点
- 压缩率天花板:同一列数据类型完全一致、规律极强(时间戳、枚举、数字),可以叠加字典编码、RLE、差值编码预处理后再二次压缩;
- OLAP 分析查询极速:统计聚合只需要读取需要的列,不用加载整行无关数据,大幅减少磁盘 IO;
- 短板:单行更新、插入性能极差,频繁修改场景完全不适用;