SQL数据库系统原理(二)———乐观锁与悲观锁、MVCC、范式理论、SQL和NoSQL比较

封锁的类型以及粒度,两段锁协议,隐式和显式锁定

封锁类型有两种:读写锁和意向锁

  1. 读写锁分类读锁(s锁)和写锁(x锁)。
    对象加了写锁,可以更新与读取,不能加其他锁。
    对象加了读锁,只能读取,可以加读锁
    在这里插入图片描述
  2. 意向锁
    新增了IS锁和IX锁,都是表锁,分别表达加S/X锁的意愿,有利于支持多粒度。
    补充:粒度有两种:表锁、行锁,行锁开销大。

两端锁协议:加锁和解锁分两阶段执行,为事务可串行化调度提供支持
隐式和显式锁定:MySQL的InnoDB引擎采用两端锁协议,自动加锁,属于隐式锁定,同时也可以显式锁定

乐观锁与悲观锁

乐观锁和悲观锁都是为了事务的并发控制。

乐观锁悲观锁
目的事务提交时检测冲突事务执行时避免冲突
实现版本控制数据库锁机制

在这里插入图片描述

MVCC原理,当前读以及快照读,Next-Key Locks

MVCC全称是多版本并发控制,是InnoDB实现隔离级别的一种方式,用于实现可提交读与可重读。MVCC并不是完全不用加锁,而是避免了对SELECT加锁的操作,提高性能。
原理:读操作时读取旧版本快照,写操作时更新新版本快照
快照读:MVCC的SELECT读取的是旧版本快照
当前读:MVCC的UPDATE/DELETE/INSERT需要加锁,读取最新的数据。
Next-Key Locks避免了幻影读,通常和MVCC配合。

范式理论

第一范式:属性不可再分
!](https://img-blog.csdnimg.cn/20200330234225622.png)
第二范式:非主属性完全依赖于键码
在这里插入图片描述
第三范式:非主属性不传递依赖于键码
在这里插入图片描述

SQL与NoSQL比较

SQL是关系型数据库,如MySQL、Oracle;NoSQL泛指非关系型数据库,如Redis。

SQLNoSQL
性能较低较高
应用结构性数据,如账号、密码非结构性数据,如文章、评论
固定结构表Json或其他方式,更加灵活
外键可以添加外键联合查询直接在原数据中添加
事务通过事务控制表的隔离级别每一个操作都具有原子性
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值