--=======================================================
--锁提示
--holdlock :将共享锁保留到事务完成,而不是在相应的表、行或数据页不需要时就立即释放锁。holdlock等同于serializable

--pagelock   :在通常使用单个表锁的地方采用页锁

--nolock   :不要发出共享锁,并且不要提供排他锁。当此选项生效时,可能会读取未提交的事务或一组在读取中间回滚的页面。
--有可能发生脏读。仅应用于select语句;NOLOCK在查询数据时不会被U锁阻塞,但是会被SCH-M锁阻塞;NOLOCK在任何事务隔离级别下效果都一样。
--对于数据变化较快或数据拆分较频繁的时候,应考虑WITH(NOLOCK)带来的脏数据影响(数据丢失和数据重复读取),可以考虑使用SNAPSHOT来代替WITH(NOLOCK)

--readcommitted(有用)   :指定语句不能读取已由其他事务修改但尚未提交的数据,默认情况下,mssql在此隔离级别上操作

--readpast  :跳过锁定行。此选项导致事务跳过其他事务锁定的行(这些行平常会显示在结果集内),而不是阻塞该事务,
--使其等待其他事务释放在这些行上的锁。readpast锁提示仅适用于运行在提交读隔离级别的事务,并且只在行级别锁之后读取,仅适用于select语句

--repeatableread:用于运行在可重复读隔离级别的事务相同的锁语义执行扫描

--rowlock(有用 update delect):使用行级锁,而不使用粒度更粗的页级锁和表级锁

--tablock:使用表锁代替粒度更细的行级锁或页级锁。在语句结束前,mssql一直持有该锁。但是,如果同时指定holdlock,那么在事务结束之前,锁
--将被一直持有

--tablockx:使用表的排他锁。该锁可以防止其他事务读取或更新表,并在语句或事务结束前一直持有

--updlock(有用 select ):读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。updlock的优点是允许读取数据(不阻塞其他事务)并在以后
--更新数据,同时确保自从上次读取数据后数据没有被更改

--xlock:使用排他锁并一直保持到由语句处理的所有数据上的事务结束时。可以使用pagelock或tablock指定该锁,这种情况下排他锁适用于适当级别的粒度

--=====================================================================================
--SQL Server 锁
--如果双方都在等待对方释放排他锁,SQL在确保另一个进程得以执行的情况下,自动牺牲第二个进程
--7种:共享锁、排他锁、更新锁、意向锁、架构锁、大容量更新锁、键范围锁
--1、共享锁(S锁 share lock):只读(可以升级到排他锁)
--2、排他锁(X锁,exclusive lock):修改
--3、更新锁(U锁,update lock):一个进程更新,另一个进程可以读取(不能更新),有效防止多个事务从共享锁向排他锁升级时可能出现的死锁
--4、意向锁(intend lock):由数据库引擎自动施加
--5、架构锁(sch lock):应用于DDL语言数据定义语言的相关锁称作架构锁 ,架构对象(列、表、视图)1、架构修改锁 2、架构稳定锁
--6、大容量更新锁(bulk update lock):当将大量数据插入到表,而且指定了 tablelock 或者
--EXEC sys.sp_tableoption  @TableNamePattern = N'dbo.Parts', -- nvarchar(776)
--    @OptionName = 'table lock on bulk', -- varchar(35)
--    @OptionValue = '1' -- varchar(12)
--表选项时将使用大容量更新锁
--7、键范围锁(range lock):针对索引
--8、自定义锁

--==============================================================================

1.数据库引擎不会将行锁或键范围锁升级到页锁,而是将它们直接升级到表锁。同样,页锁始终升级到表锁。

2.如果没有使用 ALTER TABLE SET LOCK_ESCALATION 选项来禁用表的锁升级并且满足以下任一条件时,则将触发锁升级:
a>单个 Transact-SQL 语句在单个无分区表或索引上获得至少 5,000 个锁。
b>单个 Transact-SQL 语句在已分区表的单个分区上获得至少 5,000 个锁,并且 ALTER TABLE SET LOCK_ESCALATION 选项设为 AUTO。
数据库引擎实例中的锁的数量超出了内存或配置阈值。
c>如果由于锁冲突导致无法升级锁,则数据库引擎每当获取 1,250 个新锁时便会触发锁升级。

Transaction And Lock--锁相关基础相关推荐

  1. mysql 锁设置_MySQL锁之二:锁相关的配置参数

    锁相关的配置参数: mysql> SHOW VARIABLES LIKE '%timeout%';+-----------------------------+----------+ | Var ...

  2. Java 锁相关知识汇总及锁升级

    Java 锁相关知识汇总及锁升级 锁的基础知识 什么是Synchronized 锁的四种状态 类相关信息 32位虚拟机对象头 64位虚拟机对象头 CAS 锁消除 锁粗化 Lock Record 偏向锁 ...

  3. mysql锁相关讲解及其应用——《深究mysql锁》

    一.mysql的锁类型 (1) 共享/排它锁(Shared and Exclusive Locks) 共享锁和排他锁是InnoDB引擎实现的标准行级别锁. 拿共享锁是为了让当前事务去读一行数据. 拿排 ...

  4. oracle decode_错过血亏!一文搞懂Oracle锁相关视图及相关操作

    本文主要研究锁的相关视图,以及锁的相关操作,通过视图查锁的问题. 一.v$transaction视图 第一个视图是v$transaction,就是Oracle数据库所有活动的事务数,所有活动的事务每一 ...

  5. 错过血亏!一文搞懂Oracle锁相关视图及相关操作

    本文主要研究锁的相关视图,以及锁的相关操作,通过视图查锁的问题. 一.v$transaction视图 第一个视图是v$transaction,就是Oracle数据库所有活动的事务数,所有活动的事务每一 ...

  6. Redis分布式锁相关【摘抄】

    一.为什么需要分布式锁 随着互联网的兴起,现代软件发生了翻天覆地的变化,以前单机的程序,已经支撑不了现代的业务.无论是在抗压,还是在高可用等方面都需要多台计算机协同工作来解决问题.现代的互联网系统都是 ...

  7. JAVA面试题|JAVA锁相关面试题总结(一)

    JAVA基础篇面试题 文章目录 JAVA基础篇面试题 1. 什么是JMM 2. 介绍一下violated 3. 写一个单例模式 4. 介绍一下CAS 5. CAS的问题 6. ArrayList线程不 ...

  8. Redis分布式锁相关总结

    文章目录 分布式锁 Expire命令 为什么要设置过期时间 过期时间的精度与持久 Redission看门狗机制 redis淘汰过期key Redis过期KEY的删除策略: 模式: 导航 session ...

  9. java ReentrantLock 锁相关笔记

    为什么80%的码农都做不了架构师?>>>    ReentrantLock重入锁简单理解就是对同一个线程而言,它可以重复的获取锁.例如这个线程可以连续获取两次锁,但是释放锁的次数也一 ...

  10. Python 进程互斥锁 Lock - Python零基础入门教程

    目录 一.Python 线程互斥锁和进程互斥锁 1.创建线程互斥锁 2.创建进程互斥锁 二.进程互斥锁 Lock 函数介绍 三.进程互斥锁 Lock 使用 案例一:使用进程,但不使用互斥锁 案例二:进 ...

最新文章

  1. php之常用字符串方法
  2. Windows下Caffe的学习与应用(一)——训练自己的数据模型(GoogleNet)
  3. 1.4编程基础之逻辑表达式与条件分支 05 整数大小比较
  4. java代码发送请求并传参_如何优化您的请求请求并使代码审核人员满意
  5. 精通SpringBoot---整合RabbitMQ消息队列
  6. 最具价值中国品牌百强榜单发布 小米首次入围排名第11位
  7. tcp重复的确认_TCP如何实现可靠性传输
  8. 前端开源项目周报0214
  9. 关于Dijkstra最短路径算法
  10. linux网络管理员认证考试,红帽认证系统管理员 (RHCSA) 考试
  11. CAD转JPG如何才能清晰?来看这两个方法
  12. getResource和getResourceAsStream
  13. 西游记中揭示的深刻人生哲理
  14. 使用Nginx搭建图片服务器
  15. 在 WPF 中使用 Prism DryIOC 加载应用程序时导航到默认视图
  16. 巴比特《8问》专访 Conflux 创始人龙凡教授
  17. 编译问题追踪 :高通驱动移植 <utils/Log.h>问题
  18. 银行案例分析:识别个人贷款客户画像,实现精准营销与风险防范
  19. 高级软件工程第九次作业:东理三剑客团队作业-随笔5
  20. Spring源码解读(一)——容器是如何初始化的

热门文章

  1. 火狐linux ubuntu16.04,Ubuntu 16.04 安装 Firefox 48.0 beta版
  2. java 查询线程_Java多线程查询
  3. get_live2d获取不到500_有人手机收不到验证码?警方打掉一“薅羊毛”产业链,全国已有570多万台手机被控制……...
  4. java排序 面试题_java【排序】面试题
  5. 2021年春季学期-信号与系统-第三次作业参考答案-第四道题
  6. Python中将数据矢量化运算所带来的时间加快
  7. php负载均衡原理_PHP超级负载均衡
  8. 三星二级菜单_你知道三星 Galaxy 手机中的这个隐藏菜单吗?
  9. python tk 持续请求接口获取数据_tk数据获得的问题!!
  10. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?