美文网首页
数据库系统原理概要

数据库系统原理概要

作者: HYIndex | 来源:发表于2021-03-16 22:24 被阅读0次

事务

  • ACID

    • 原子性

    • 隔离性

    • 一致性

    • 持久性

      • 应对系统崩溃,可以用Redo Log恢复
  • AUTOCOMMIT:MySQL默认采用自动提交,不显示start transaction,每个查询都会被当成一个事务执行并自动提交

并发一致性问题

  • 丢失修改

  • 脏读

  • 不可重复读

  • 幻读

    • insert操作引起

  • 锁粒度

    • 行锁
    • 表锁
  • 锁类型

    • 读写锁

      • 互斥锁(X锁、写锁)
      • 共享锁(S锁、读锁)
      • 一个事务对数据A加了X锁,期间其他事务不能对A加任何锁
        一个事务对数据A加了S锁,其他事务可以对A加S锁,但是不能加X锁
    • 意向锁

      • 可以更容易支持多粒度加锁

      • IX/IS锁,表示一个事务想要再表中的某个数据行上加X/S锁

        • 一个事务再获得某个数据行的S锁之前,必须先获得表的IS锁或更强的锁
        • 一个事务在获得某个数据行的X锁之前,必须先获得表的IX锁
        • 任意IS/IX锁之间都是兼容的
  • 封锁协议

    • 一级:事务T要修改A时必须加X锁,直到T结束才释放(解决丢失修改问题)
    • 二级:在一级基础上事务T要读取A时必须加S锁,读取完立即释放锁(解决脏读问题)
    • 三级:在二级的基础上,要求读取A时必须加S锁,直到事务结束才释放(解决不可重复读问题)
    • 两段锁协议:加锁和解锁分两个阶段进行,保证可串行化调度

事务隔离级别

  • 读未提交(RU)
  • 读提交(RC)
  • 可重复度(RR)
  • 可串行化(Serializable)

多版本并发控制(MVCC)

  • 版本号

    • 系统版本号SYS_ID:每开启一个新事务时递增
    • 事务版本号TRX_ID:事务开启时的系统版本号
  • ReadView

    • 当前系统未提交的事务列表,以及最大ID和最小ID
  • 快照读:SELECT,不需要进行加锁

  • 当前读:INSERT、UPDATE、DELETE,需要加锁

  • SELECT时可以显式指定加锁

    • select * from table where ? lock in share mode;(S锁)
    • select * from table where ? for update;(X锁)

Next-Key Locks

  • 可重复读级别下,使用MVCC+Next-Key Lock可以解决幻读
  • Record Locks: 锁定一个记录上的索引
  • Gap Locks:锁定索引之间的间隙,但是不包括索引本身

关系数据库

  • 异常

    • 冗余数据、修改异常、删除异常、插入异常
  • 范式

    • 为了解决异常
    • 第一范式:属性不可分割
    • 第二范式:非主属性完全依赖于键码
    • 第三范式:非主属性不传递函数依赖于键码

【参考文章】GitHub-CyC2018/CS-Notes

相关文章

  • 数据库系统原理概要

    事务 ACID原子性隔离性一致性持久性应对系统崩溃,可以用Redo Log恢复 AUTOCOMMIT:MySQL默...

  • 2018-11-27

    计算机组成原理 数据库系统原理 概率论与数理统计 计算机网络原理

  • Kafka原理概要

    [TOC] 集群成员间的关系 我们知道,Kafka 是运行在 ZooKeeper 之上的,因为 ZooKeeper...

  • 系统原理概要

    系统 总体大于部分之和。 系统中的很多相互连接是通过信息流进行运作的。 系统中最不明显的部分是它的功能或目标,而这...

  • Redis入门到高可用-9.Redis集群伸缩

    1.概要 伸缩原理 扩容原理 缩容原理 2.伸缩原理 Redis伸缩原理.png 3.扩容集群 Redis扩容集群...

  • 大纲

    (一)数据库基本概念和原理 1、考试内容: 数据模型,数据库系统结构,数据库系统组成 2、考试要求: 掌握数据库、...

  • C++实现的基于NSM的简易数据库

    1 引言 1.1 实验目的 深入掌握数据库系统的原理和技术,进而从事数据库管理软件和工具的开发 深入了解数据库系统...

  • 数据库系统原理

    课程内容与考核要求[https://www.jianshu.com/p/b0c3b42dc0b6]数据库系统原理概...

  • 代理模式

    Android插件化原理解析——Hook机制之动态代理 Android插件化原理解析——概要 Retrofit2 ...

  • 九大排序C语言实现总结

    一、概要 不懂原理原理的,赶紧去找你的 Googe Baidu ?!源码地址 GitHub 二、实现 1.冒泡排序...

网友评论

      本文标题:数据库系统原理概要

      本文链接:https://www.haomeiwen.com/subject/ukpckhtx.html