[数据库]复习杂项

在这里插入图片描述
(画师蓝鸟@mo13tto)

数据库笔记(补充)——候选码的确定方法

求最小依赖集

最小函数依赖集Fm的定义,求法以及举例

当然这篇文章后半部分有误:【通俗易懂】关系模式范式分解教程 3NF与BCNF口诀!小白也能看懂

数据库期末考试预习之候选码,最小函数依赖集,3NF分解算法,判断第几范式

数据库 分解3NF

一道关系模式的练习题(求候选码,最小依赖集,模式分解)

E-R图转化为关系模型

并发控制

事务是并发控制的基本单位

并发控制的主要技术:

  • 封锁
  • 时间戳
  • 乐观控制法
  • 多版本并发控制

封锁

解决并发操作带来的数据不一致性问题

主要是X锁(排它锁)和S锁(读锁)

  • X锁:加上之后只能本事务读写加锁的数据对象,其他事务不能加任何类型的锁
  • S锁,加了就能读(但不能修改),其他事务随时可加S锁。

一个数据有S锁(S锁数量>=1时)就只能读,直到所有S锁释放

即一个数据对象同一时刻最多只能存在一个X锁,或者存在零到多个S锁。


加锁应当遵循的规则即封锁协议

一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
二级封锁协议:在级封锁协议基础上加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。
三级封锁协议:在级封锁协议基础上加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。

注意申请和释放的时机

可串行化调度

这个定义确实很晦涩,我理解的就是对于事务 T 1 T_1 T1 T 2 T_2 T2,它们分为很多步骤(比如读取、运算、写回)。串行调度就是先执行 T 1 T_1 T1在执行 T 2 T_2 T2或者先执行 T 2 T_2 T2 T 1 T_1 T1.总之是一个事务运行完再进行另一个。

但是这里由于先后执行顺序不同,结果可能也不同

可串行化调度就是执行一个事务的一部分,然后执行另一个事务的一部分,然后再回来执行,其结果符合原先串行调度的任意一种结果就行

在这里插入图片描述
我拿张别人的图,可以结合着看看。

非可串行化就是结果和串行调度都不一样。一般就是两个操作都先S锁取同一时刻
初始值,然后最后导致运算结果不一样

两段锁协议

申请的时候只能申请,释放的时候只能释放

遵循两段锁协议的事务可能会发生死锁

猜你喜欢

转载自blog.csdn.net/qq_39377889/article/details/128361140
今日推荐