06-数据库学习笔记(存储模型与数据压缩)

一.数据库三大业务负载

数据库的业务负载直接决定后续存储模型和压缩方式的选择,不同负载的查询特性、读写比例差异显著,因此需要针对性适配,这也是三大负载分类出现的核心原因。

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;
  • 短板:单行更新、插入性能极差,频繁修改场景完全不适用;
相关推荐
白帽攻防录7 小时前
SRC 挖洞:Roundcube 预认证 SQL 注入深度复盘,CVE-2026-48842 preg_replace 转义绕过怎么打穿邮件系统
网络·数据库·sql·网络安全·sql注入
扶风ff7 小时前
新品知识更新太快?用练题簿在线刷题,安排企业培训的小测与复盘
前端·学习·小程序
꯭自꯭闭꯭7 小时前
达梦SQL优化相关
linux·运维·数据库·sql
对空六课8 小时前
支持注意力分析的热力图工具有哪些?
前端·数据库·数据分析
南京码讯光电技术有限公司8 小时前
How to Design an Antenna System for an Industrial WiFi Module
数据库·人工智能
lusklusklusk9 小时前
Oracle数据库基础之2_体系结构
数据库·oracle
FakeOccupational9 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
可乐ea9 小时前
从第一性原理构建 AI Agent:提示词、工具、技能与记忆全解剖
数据库·人工智能·工具调用·ai智能体·提示词工程·agent开发·智能体记忆
东方护航数据恢复(深圳)10 小时前
医疗案例:HIS/PACS 数据库页损坏修复,医院不停诊完成恢复【东方护航数据恢复深圳店】
数据库·数据恢复·医疗·二次开盘
传奇开心果编程10 小时前
【SwiftUI提高练中学】第13课 实时活动与灵动岛:ActivityKit 实战
学习·ui·ios·swiftui·swift