--=======================================================
--锁提示
--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> SHOW VARIABLES LIKE '%timeout%'; +-----------------------------+----------+ | Va ...

  2. 小结java自带的跟锁相关的一些类

    java.util.concurrent包下的一些跟锁相关的类列表  类  简介 locks.Lock接口 Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作.此 ...

  3. Transaction recovery: lock conflict caught and ignored

    Transaction recovery: lock conflict caught and ignored环境:RAC 4节点.oracle 11.2.0.4.redhat 5.9 64bit 问题 ...

  4. 记一次 oracle 12.2 RAC : Transaction recovery: lock conflict caught and ignored

    节点一 alert日志: PDB(17):Transaction recovery: lock conflict caught and ignored PDB(17):Transaction reco ...

  5. mysql 锁相关的视图(未整理)

    mysql 锁相关的视图 查看事务,以及事务对应的线程ID   如果发生堵塞.死锁等可以执行kill  线程ID  杀死线程      kill  199 SELECT * FROM informat ...

  6. CAS锁相关讲解

    感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html ...

  7. 锁相关知识 & mutex怎么实现的 & spinlock怎么用的 & 怎样避免死锁 & 内核同步机制 & 读写锁

    spinlock在上一篇文章有提到:http://www.cnblogs.com/charlesblc/p/6254437.html  通过锁数据总线来实现. 而看了这篇文章说明:mutex内部也用到 ...

  8. sql 锁相关(转)

    锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性. 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象.即如果没有锁定且多个用户同时访问一个数据库 ...

  9. Innodb锁相关总结

    一.InnoDB共有七种类型的锁: (1)共享/排它锁(Shared and Exclusive Locks) (2)意向锁(Intention Locks) (3)插入意向锁(Insert Inte ...

  10. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

随机推荐

  1. MacOS下JDK6源码配置

    参考:http://www.mkyong.com/mac/how-to-download-jdk-source-code-for-mac-os-x/ 系统默认的JDK是没有源码的,据说这是因为此JDK ...

  2. HTTP之Tcp/Ip协议的工作原理

    计算机与网络设备要相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起通信.使用哪种语言进行通信.怎样结束通信等规则都需要事先确定.不同的硬件.操作系统之间的通信,所有的这一切 ...

  3. OpenSUSE 安装JAVA环境变量JDK

    一.首先卸载虚拟机自带的JDK环境 具体命令: rpm -qa |grep java  --查找java信息 rpm –qa|grep jdk   --查找jdk信息 如果有依赖关系,提示无法卸载,使 ...

  4. unity2017.1.0f3与旧的粒子系统不兼容

    在测试旧版本插件unistorm时用unity2017.1.0f3打开后其它天气效果显示正常,雨点看不到,再用unity5.52打开后,所有效果都可以看到了. 记录备忘

  5. Java 单例模式详解(转)

    概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. 单例模式有一下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. ...

  6. 3.Hadoop集群搭建之Zookeeper安装

    前期准备 下载Zookeeper 3.4.5 若无特殊说明,则以下操作均在master节点上进行 1. 解压Zookeeper #直接解压Zookeeper压缩包 tar -zxvf zookeepe ...

  7. iOS学习之UIDatePicker控件使用

    iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. ,   您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Ti ...

  8. Linux实战教学笔记33:lvs+keepalived集群架构服务

    一,LVS功能详解 1.1 LVS(Linux Virtual Server)介绍 LVS是Linux Virtual Server 的简写(也叫做IPVS),意即Linux虚拟服务器,是一个虚拟的服 ...

  9. class Qstring has no member named to Ascii

    人家修改了.真的没有toAscii了.不过可以用toLatin1或者qPrintable()

  10. SourceTree 3.0.8 跳过登陆注册

    3.0.8普通用户版account.json跳过登陆注册方法已失效,请安装企业版 https://www.sourcetreeapp.com/enterprise 企业版默认安装在 %programf ...