1.锁定:
1.1》多个用户同时连接使用数据库是,如果没有些特殊的操作处理,很容易出现数据保存冲突的(就像在线购票系统)如下图演示冲突:
用户a执行+40,同时用户b执行-40,如果没有特殊处理那么数据只会执行一个操作(b的操作-40,记过为60)。
1.2》锁定含义:
就是是数据库中的特定数据不让其他用户操作而上的一把锁的机制,上锁为lock,解锁为unlock.
1.3》锁定的种类:
共享锁定:当用户参照数据时,将对象数据变为只读形式的锁定(该数据不能被改变,只能被参照)。上述图例中如果a对数据实施了共享锁定,那么b只能对
数据进行参照,而不能更新。又称为读取锁定。
排他锁定:是使用insert/update/delete命令对数据进行更新时使用的锁定。其他的进程(事物)一律不能对该数据读取。自然其他事物处理中也不能进行更新一集参照
又称为,写入锁定或独占锁定。
1.4》锁定粒度:
含义:锁定对象的大小,单位通常被称为锁定的粒度。有以下三种(数据库不同会有所差异)1,记录(行),2,表,3,数据库。
2.分离水平
分离水平 | 读脏数据 | 不可重复读 | 产生幽灵数据 |
READ UNCOMMITTED | Y | Y | Y |
READ COMMITTED | N | Y | Y |
REPEATEBLE READ | N | N | Y |
SERIALIZABLE | N | N | N |
2.2》详细介绍:set transaction isolation level 是用于修改分离水平的命令,如果制定了session关键字,设定只适用于当前的连接,(如果制定了global关键字,则使用与其后其它新连接)。
2.2.1》read uncommitted(非提交读取)
2.2.2》不可重复读取
2.2.3》幻想读取
2.2.4》:
3.死锁: