侧边栏壁纸
博主头像
Terry

『LESSON 5』

  • 累计撰写 90 篇文章
  • 累计创建 21 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

数据库系统

Terry
2020-04-23 / 0 评论 / 0 点赞 / 613 阅读 / 936 字 / 正在检测是否收录...

事务四大特性

  1. 原子性
    事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。
  2. 一致性
    数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。
  3. 隔离性
    一个事物所做的修改在最终提交以前,对其他事务是不可见的。
  4. 持久性
    一旦事务提交,则其所作的修改将会永远保存到数据库中,就算系统发生崩溃,事务执行的结果也不能丢失。

并发一致性问题

  1. 脏读
    一个事务读取另外一个事务还没有提交的数据,这种情况叫做脏读。
  2. 不可重复读
    在一个事务中前后两次读取的结果不一致,到哦值了不可重复读。
  3. 幻读
    在两个连续的查询之间一个并发的事务修改了查询的数据集,导致这两个查询返回了不同的结果。

事务的隔离(解决并发一致性问题)

  1. 未提交读
    事务中的修改,即使没有提交,对其他事务也是可见的。
  2. 已提交都读
    一个事物只能读取已经提交的事务所作的修改。
  3. 可重复读
    保证在同一个事物中多次读取同样数据的结果是一样的。MYSQL默认的隔离级别
  4. 可串行化
    强制事务串行执行。需要加锁实现,而其他隔离级别通常不需要。

多版本并发控制

多版本并发控制(MVCC)是MySQL的InnoDB存储引擎实现隔离级别的一种具体方式,
用于实现已提交读和可重复读这两种隔离级别

  1. 版本号
  • 系统版本号:是一个递增的数字,每次开始一个新的事务,系统版本号就会自动递增。
  • 事务版本号:事务开始时的系统版本号。
  1. 快照读
    使用MVCC读取的是快照中的数据,这样可以减少加锁所带来的开销。
  2. 当前读
    使用MVCC读取的是快照中的数据,这样可以减少加锁所带来的开销。

范式

  1. 第一范式
    所有字段值都是不可分解的原子值
  2. 第二范式
    确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关。
  3. 第三范式
    每一列数据都和主键直接相关,而不能间接相关。
0

评论区