深入理解RDBMS|青训营笔记

157 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

深入理解RDBMS

存储系统

块存储、文件存储、对象存储、key-value存储

数据库系统

关系型数据库、非关系型数据库

分布式架构

数据库分布策略、数据复制协议、分布式事务算法

传统数据库系统

  1. 网状数据库
  2. 层次数据库
  3. 关系数据库

事务(Transaction)

由一组SQL语句组成的一个程序执行单元(unit)

  1. 原子性(Atomicity)
  2. 一致性(Consistency)
  3. 隔离性(Isolation)
  4. 持久性(Durability)

事务的并发问题

  1. 脏读
  2. 不可重复读
  3. 幻读

MySQL事务隔离级别

  1. 读未提交
  2. 不可重复读
  3. 可重复读
  4. 串行化

彻底搞懂 MySQL 事务的隔离级别-阿里云开发者社区 (aliyun.com)

SQL引擎

  1. 解析器(parser)

    一般分为词法分析(Lexical analysis)、语法分析(Syntax analysis)、语义分析(Semantic analyzer)等步骤

  2. 优化器(Optimizer)

    1. 基于规则的优化——RBO
    2. 基于代价的优化——CBO
  3. 执行器(Executor)

存储引擎

  1. InnoDB

  2. Buffer Pool

    MYSQL的优化思路就是:对数据进行冷热分离,将LRU链表分成两部分,一部分用来存故冷数据,也就是列从磁盘读进来的数据,另一部分用来存放热点数据,也就是经常被访问到数据 当从磁盘读段攻数据页后,会先将数们手存故到LRU特表冷数据区的头部,如果这些缓存页在1秒之后被访问,那公就将缓存页移动到热数裾区的头部;如果是1秒之内被破j访问,则不会移动,缓存页仍然处于冷数据风中,淘汰时,首先淘汰冷数据区。

  3. Page

  4. B+ Tree

事务引擎

  1. Atomicity与Undo Log

    1. 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执对行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。需要记录数据修改前的状态,—边在事务失败时进行回滚。
    2. Undo log是逻辑日志,记录的是数据的增量变化,它的作用是保证事务的原子性和事务并发控制。可以用于事务回滚,以及提供多版本机制(MVCC),解决读写冲突和一致性读的问题。
  2. Isolation与锁

  3. Isolation与MVCC

  4. Durability与Redo log

    1. 持久化:事务处理结束后,对数据的修改就是永久的,即使系统故障也不会丢失。

    2. WAL(Write-ahead logging)

      Redo log是物理日志,记录的是页面的变化,它的作用是保证事务持久化。如果数据写入磁盘前发生故障,重启MySQL后会根据redo log重做。