sql 锁 的概念

来源:百度知道 编辑:UC知道 时间:2024/09/26 14:14:14
一直不明白sql锁是干什么用的 有没有实际运用意义 看书上说的锁好像都想一般的语句里集成了 不用我们加了 好像还有一种叫悲观锁的 要程序员加 书上也没介绍要怎么加 加在那里 加上之后能起什么作用

麻烦大哥 给简单的说说什么悲观锁是怎么回事 锁在语句中怎么加
不要复制 因为我看不懂

举个例子吧 当你要进一个房间的时候,你想推门,这个时候刚好有个人想出来,他也想推门出去,于是,两个人就卡在那了,结果,后面排队的人也都动弹不了了,假如这个房间是个数据库,那么,数据库这个时候就卡壳了。
锁正是为避免这种情况出现的
悲观锁就是 一个一个来,当有人想进这个房间的时候,其他人都别动
但假如这个房间有很多门,这些门通往不同的地方,比如,有可以直接进洗手间的,有可以进厨房的,结果,你一个人想去卧室,却禁止其他人进洗手间,这样对效率就会产生影响。于是,乐观所就是,当你想进的时候,等到你来到门的门口,才把当前这个门锁住。之所以叫乐观,也就是说,乐观地假定你的行为不会影响到其他人,等到影响到的时候再加锁。而悲观的意思,就是一开始就假定你会影响到其他人了,所以全部锁了干净。
并不是说乐观锁一定好过悲观锁。乐观锁可能会产生脏数据(具体的书里巴拉巴拉讲了一堆,就忘了。。)
恩 大概是这样啦,具体语法就要自己去搜啦

◆锁的类别有两种分法:

1. 从数据库系统的角度来看:分为独占锁(即排它锁),共享锁和更新锁

MS-SQL Server 使用以下资源锁模式。

锁模式 描述

共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。

更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。

排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。

意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。

架构锁 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。

大容量更新 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用。

◆共享锁

共享 (S) 锁允许并发事务读取 (SELECT)