深入理解RDBMS-学习笔记
今天咱们不聊那些高大上的数据库理论,先来聊聊一个大家都熟悉的场景:春节的那个“红包雨”。你有没有想过,为什么在那个全民抢红包的疯狂时刻,数据库系统依然能稳定运行,不会出现钱发错、重复发或者遗漏的情况?这就不得不提到RDBMS(关系型数据库管理系统)中的事务ACID特性啦!
所谓ACID,就是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。简单概括,就是保证你发的红包要么成功,要么完全失败;即使服务器宕机,你的红包也能稳稳地躺在账户里。比如,在红包雨中,如果小明抢到了一个红包,系统必须确保这笔钱不会被其他人的交易影响,同时这笔钱还会被永久存储下来。
但你以为这就完了?当然不是!现代数据库还有一个终极挑战:高并发和高可靠。比如,当全国人民同时疯狂抢红包时,数据库的访问量瞬间飙升,这时候就得靠数据库的优化技术来支撑,比如InnoDB存储引擎的Buffer Pool,可以像一个超级聪明的缓存,帮你快速读取数据,避免直接读取磁盘的慢动作。再加上事务引擎里的锁机制和MVCC(多版本并发控制),系统就能从容地处理海量请求,不会像挤地铁一样卡死。
所以,下次你再抢红包的时候,不妨想象一下背后这个默默奋斗的RDBMS,它就像一个超级英雄,保证了你的每一分钱都能安全到达你的账户。这或许就是技术的魅力吧!
哦,对了,如果你还想了解更多关于数据库的黑科技,可以去翻翻那些经典的SQL优化技巧,或者研究一下分布式数据库的奥秘,也许你会发现更大的世界!
1 经典案例
1.1 红包雨
1.2 事务ACID
1.3 红包雨与ACID
1.3.1 原子性
1.3.2 一致性
1.3.3 隔离性
1.3.4 持久化
1.4 红包雨与高并发
1.5 红包雨与高可靠
2 发展历史
2.1 前DBMS时代
2.1.1 人工管理
2.1.2 文件系统
1950s,现代计算机的雏形基本出现。1956年IBM发布了第一个的磁盘驱动器--Model 305 RAMAC,从此数据存储进入磁盘时代。在这个阶段,数据管理直接通过文件系统来实现。
2.1.3 DBMS时代
1960s,传统的文件系统已经不能满足人们的需要,数据库管理系统( DBMS )应运而生。
DBMS:按照某种数据模型来组织、存储和管理数据的仓库。
所以通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。
2.2 DBMS数据模型
2.2.1 网状模型
网状数据库所基于的网状数据模型建立的数据之间的联系,能反映现实世界中信息的关联,是许多空间对象的自然表达形式。
1964年,世界上第一个数据库系统——集成数据存储(Ilntegrated Data Storage , lDS)诞生于通用电气公司。IDS是世界上第一个网状数据库,奠定了数据库发展的基础,在当时得到了广泛的应用。在1970s网状数据库系统十分流行,在数据库系统产品中占据主导地位。
2.2.2 层次模型
2.2.3 关系模型
1970年,IBM的研究员E.E.Codd博士发表了一篇名为'ARelational Model of Data for Large Shared Data BankS'的论文,提出了关系模型的概念,奠定了关系模型的理论基础。1979年Oracle首次将关系型数据库商业化,后续DB2,SAP Sysbase ASE, and nformix等知名数据库产品也纷纷面世。
2.2.4 DBMS数据模型
2.3 SQL语言
2.4 历史回顾
3 关键技术
3.1 一条SQL的一生
3.2 SQL引擎
3.2.1 Parser
3.2.2 Optimizer
基于规则的优化:
基于代价的优化:
3.2.3 Executor
火山模型:
向量化:
编译执行:
3.3 存储引擎
3.3.1 InnoDB
3.3.2 Buffer Pool
3.3.3 Page
3.3.4 B+Tree