笔记27 MSSQL锁的种类
笔记27 MSSQL锁的种类
1 --MSSQL锁的种类 2 --如果双方都在等待对方释放排他锁,SQL在确保另一个进程得以执行的情况下,自动牺牲第二个进程 3 --7种基本的锁:共享锁、排他锁、更新锁、意向锁、架构锁、大容量更新锁、键范围锁 4 --1、共享锁(S锁 share lock):只读(可以升级到排他锁) 5 --2、排他锁(X锁,exclusive lock):修改 6 --3、更新锁(U锁,update lock):一个进程更新,另一个进程可以读取(不能更新),有效防止多个事务从共享锁向排他锁升级时可能出现的死锁 7 --4、意向锁(intend lock):由数据库引擎自动施加 8 --5、架构锁(sch lock):应用于DDL语言数据定义语言的相关锁称作架构锁 ,架构对象(列、表、视图)1、架构修改锁 2、架构稳定锁 9 --6、大容量更新锁(bulk update lock):当将大量数据插入到表,而且指定了 tablelock 或者 10 --EXEC sys.sp_tableoption @TableNamePattern = N'dbo.Parts', -- nvarchar(776) 11 -- @OptionName = 'table lock on bulk', -- varchar(35) 12 -- @OptionValue = '1' -- varchar(12) 13 --表选项时将使用大容量更新锁 14 --7、键范围锁(range lock):针对索引 15 --8、自定义锁 16 17 --锁提示----------------------------------------------------------------------------------------------------------------- 18 19 --holdlock :将共享锁保留到事务完成,而不是在相应的表、行或数据页不需要时就立即释放锁。holdlock等同于serializable 20 21 --nolock :不要发出共享锁,并且不要提供排他锁。当此选项生效时,可能会读取未提交的事务或一组在读取中间回滚的页面。 22 --有可能发生脏读。仅应用于select语句 23 24 --pagelock :在通常使用单个表锁的地方采用页锁 25 26 --readcommitted(有用) :指定语句不能读取已由其他事务修改但尚未提交的数据,默认情况下,mssql在此隔离级别上操作 27 28 --readpast :跳过锁定行。此选项导致事务跳过其他事务锁定的行(这些行平常会显示在结果集内),而不是阻塞该事务, 29 --使其等待其他事务释放在这些行上的锁。readpast锁提示仅适用于运行在提交读隔离级别的事务,并且只在行级别锁之后读取,仅适用于select语句 30 31 --repeatableread:用于运行在可重复读隔离级别的事务相同的锁语义执行扫描 32 33 --rowlock(有用 update delect):使用行级锁,而不使用粒度更粗的页级锁和表级锁 34 35 --tablock:使用表锁代替粒度更细的行级锁或页级锁。在语句结束前,mssql一直持有该锁。但是,如果同时指定holdlock,那么在事务结束之前,锁 36 --将被一直持有 37 38 --tablockx:使用表的排他锁。该锁可以防止其他事务读取或更新表,并在语句或事务结束前一直持有 39 40 --updlock(有用 select ):读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。updlock的优点是允许读取数据(不阻塞其他事务)并在以后 41 --更新数据,同时确保自从上次读取数据后数据没有被更改 42 43 --xlock:使用排他锁并一直保持到由语句处理的所有数据上的事务结束时。可以使用pagelock或tablock指定该锁,这种情况下排他锁适用于适当级别的粒度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现