“在极端并发下,如何用最短的时间,把一笔数据绝对安全、绝对准确地写到磁盘上,并能随时精准查出来。”
对应到 OLTP(联机事务处理)系统,其背后的数据库核心技术是一套极其庞大且严密的体系。如果拿银行的交易系统(如核心、信贷、支付)来对标,OLTP 数据库的核心技术主要体现在以下几个层面:
这是 OLTP 数据库的底线,所有的技术都是为这四条服务的:
事务与并发控制(A & I - 原子性、隔离性)
WAL(预写日志,Write-Ahead Logging) :这是数据库极其核心的技术。必须先写日志,再写数据文件,保证哪怕断电了也能通过日志恢复(Redo Log),保证数据不丢。
MVCC(多版本并发控制) :比如 Oracle 的 Undo 机制、MySQL InnoDB 的 Read View。为了让“读”不阻塞“写”,“写”不阻塞“读”,OLTP 数据库需要维护数据的多个版本。
锁机制 :行级锁、表级锁、乐观锁/悲观锁、意向锁等。在银行高并发转账时,如何避免死锁,是数据库并发控制的核心难题。
持久化(D - 持久性)
日志与刷盘机制
:如 Oracle 的 LGWR 进程,MySQL 的
innodb_flush_log_at_trx_commit
参数调优,决定交易数据何时落地磁盘。
高可用与容灾架构
Oracle RAC :通过共享存储和 Cache Fusion(缓存融合)技术,实现多节点并行读写。
主备复制 :MySQL 的 MGR(组复制)、半同步复制;Oracle 的 Data Guard(ADG)。银行通常要求 RPO=0(数据零丢失),RTO 极短(秒级切换)。
B+ 树索引与执行计划优化
OLTP 以“点查”(按主键/索引查)为主, B+ 树 是标配。数据库优化器(CBO,基于成本的优化器)如何选择最优索引、避免全表扫描,是核心技术。
缓冲池(Buffer Pool)与内存管理
数据库不能每次都读磁盘,必须有极速的内存管理。比如 InnoDB 的 Buffer Pool 淘汰算法(改良的 LRU),Oracle 的 SGA(系统全局区)。
连接池与线程模型
比如 MySQL 的线程池、Oracle 的共享服务器/专用服务器模式。在面临几万 TPS 时,如何高效复用数据库连接而不至于把 CPU 打满。
SQL 解析与优化
词法/语法分析,生成执行树。银行很多复杂的关联查询,需要数据库有强大的优化器能力。
存储过程与触发器
银行核心系统(尤其是老一代的大机、DB2、Oracle)大量使用存储过程(PL/SQL)来保证业务逻辑在数据库端原子执行,减少网络交互。
分布式事务(在分布式/微服务架构下)
虽然传统银行用单机 Oracle 解决,但现在走向分布式数据库(如 OceanBase、TDSQL、GoldenDB),就必须用到 2PC(两阶段提交) 、 TCC 、 Paxos/Raft 一致性协议 。
数据加密与脱敏 :透明数据加密(TDE)、国密算法支持。
审计日志(Audit Log) :记录每一次数据的变更,满足金融监管合规要求。
权限控制 :基于角色的访问控制(RBAC),精细到行级、列级。
结合你之前列的清单,学习 OLTP 数据库技术,本质上是在学:
Database(数据库理论) :底层原理、MVCC、锁、事务。
Oracle / MySQL / DB2 :具体产品的 RAC 架构、InnoDB 引擎、执行计划分析、性能调优。
UNIX/Linux OS :数据库的高性能,离不开操作系统的 IO 模型(如异步 IO、Direct IO)、内存页管理、文件系统(如 XFS)。
数据类面试&&机试 :通常就是考 SQL 调优、索引原理、高并发场景下的分库分表设计。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-3186174/ ,如需转载,请注明出处,否则将追究法律责任。