RDBMS学习总结 | 青训营

61 阅读3分钟

写在前面

关系型数据库是我们开发中存储数据必要的一环,比较常见的数据库管理系统有MySQL、PostgreSQL等等,同时为了整个系统的执行效率,我们有必要了解数据库的底层原理。

事务相关概念

  • 事务是一组SQL语句组成的执行单元
  • 事务需要保持ACID特性
    • 原子性:事务需要保持原子性,即一个事务要么全部执行,要么都不执行。
    • 一致性:事务不能破坏关系数据的完整性与业务的一致性。
    • 隔离性:在并发场景下,多事务并发时,事务是隔离的。
    • 持久性:事务完成之后会被持久地保存,数据不会因为宕机等特殊情况而丢失

数据库管理系统发展历史

  • 文件管理
    • 在计算机发展初期,对于数据的管理由计算机的文件系统实现管理
    • 但传统的文件系统比较单一,无法满足人们的需要
  • DBMS
    • 网状数据模型

      • 网状数据库是基于网状数据模型建立数据间的联系,其中IDS是第一款网状数据库,盛行一时
      • 存在结构负载、访问程序复杂等问题
    • 层次数据模型

      • 层次数据模型采用树形结构来描述实体及其之间的联系
      • 无法表示多对多的关系
      • 树形结构局限性较大
    • 关系数据模型

      • 实体和实体之间的联系通过表结构表示
      • 可以很方便地描述多对多的关系
      • 但是关联查询需要进行表的关联,效率不够高

SQL

一条SQL的执行流程为用户发送请求,然后通过Router进行解析,选择对应的RDBMS、RDBMS执行相应的SQL语句,首先将SQL语句交给Parser进行语法分析,然后交给Optimizer进行优化,接着交给Executor执行,Excutor与Data File和Log File进行交互,然后将执行结果交给RDBMS、RDBMS将执行结果交给Router最后返回给用户。

  • Parser

    • Parser为解析器,主要进行词法分析和语法分析等等
    • Optimizer主要进行SQL执行计划的优化,进行条件化简、表连接优化等工作
    • Executor通过火山模型、向量化等方式提高执行效率
    • 存储引擎
  • Buffer Pool

    • Buffer Pool为缓存池,可以对磁盘文件进行缓存,提高执行效率
  • Page

    • 有PageHeader、UserRecords、Free Space、Page Directory、FIL Trailer等组成内容
  • B+树

    • B+树是一个高效的数据结构,用来管理页面
  • 事务引擎

    • 日志
      • 日志可以用来数据库恢复数据,其中Undo log是逻辑日志,记录数据的增量变化
      • 可以利用Undo log进行事务回滚,保证事务的原子性
      • 需要利用读写锁、两阶段锁等方式保证并发安全性

总结

本文介绍了数据库事务的概念、数据库的发展历史、SQL的底层执行流程。如果需要继续精进可以通过阅读相关书籍和文献。 数据库的底层原理是我们需要了解的,只有了解了底层原理才能在面对高并发量、高存储量的场景时更加游刃有余。同时数据库的相关原理也是我们程序员的必修课。