sql 锁 的概念
来源:百度知道 编辑:UC知道 时间:2024/09/26 14:14:14
麻烦大哥 给简单的说说什么悲观锁是怎么回事 锁在语句中怎么加
不要复制 因为我看不懂
举个例子吧 当你要进一个房间的时候,你想推门,这个时候刚好有个人想出来,他也想推门出去,于是,两个人就卡在那了,结果,后面排队的人也都动弹不了了,假如这个房间是个数据库,那么,数据库这个时候就卡壳了。
锁正是为避免这种情况出现的
悲观锁就是 一个一个来,当有人想进这个房间的时候,其他人都别动
但假如这个房间有很多门,这些门通往不同的地方,比如,有可以直接进洗手间的,有可以进厨房的,结果,你一个人想去卧室,却禁止其他人进洗手间,这样对效率就会产生影响。于是,乐观所就是,当你想进的时候,等到你来到门的门口,才把当前这个门锁住。之所以叫乐观,也就是说,乐观地假定你的行为不会影响到其他人,等到影响到的时候再加锁。而悲观的意思,就是一开始就假定你会影响到其他人了,所以全部锁了干净。
并不是说乐观锁一定好过悲观锁。乐观锁可能会产生脏数据(具体的书里巴拉巴拉讲了一堆,就忘了。。)
恩 大概是这样啦,具体语法就要自己去搜啦
◆锁的类别有两种分法:
1. 从数据库系统的角度来看:分为独占锁(即排它锁),共享锁和更新锁
MS-SQL Server 使用以下资源锁模式。
锁模式 描述
共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。
更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。
排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。
架构锁 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。
大容量更新 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用。
◆共享锁
共享 (S) 锁允许并发事务读取 (SELECT)