设为首页 收藏本站
查看: 789|回复: 0

[经验分享] SQL Server中的事务和锁

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-4-9 09:00:25 | 显示全部楼层 |阅读模式
SQL Server中的事务和锁

事务全部是关于原子性(atomicity)的。原子性的概念是指可以把一些事情当作一个单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。
在事务中可以标记的点:
1.      Begin Tran:设置起始点。
2.      Commit Tran:使事务成为数据库永久的、不可逆转的一部分。
3.      Rollback Tran:本质上说想要忘记它曾经发生过,即使回滚,回到事务发生之初。
4.      Save Tran:创建一个特定标识符,只运行作部分回滚。
SQL Server日志的工作方式
SQL Server中可以锁定的资源:
1.      数据库:锁定整个数据库。这通常发生在整个数据库模式改变的时候。
2.      表:锁定整个表。这包含了于该表相关联的所有数据相关的对象,包括实际的数据行(它们的每一行)以及与该表相关联的所有索引中的键。
3.      区段:锁定整个区段。因为一个区段是由8页组成,所以区段锁定是指锁定控制了区段、控制了该区段内的8个数据或索引页以及8也中的所有数据行。
4.      页:锁定该页中的所有数据或索引键。
5.      键:在索引中的特定键或一系列键上有锁。相同索引页中的其他键不受影响。
6.      行或行标识符(RID):虽然从技术上讲:锁是放在行标识符(它是SQL Server的内部结构)上的,但是本质上是锁定了整个数据行。
SQL Server锁的锁定模式:
1.      共享锁:共享锁用于只需要读取数据的时候,也就是不会改变任何内容。
2.       排他锁:不能与其他锁共存。
3.      更新锁:更新锁是共享锁和排他锁的混合,是一种特殊的占位符。也就是先共享数据,可以读取,当需要更改的时候,转换成排他锁,就可以有效地防止死锁了。
4.      意向锁(IntentLock):是真正的占位符,用来处理对象层次问题。
5.      模式锁(SchemaLock):分为模式修改锁(对对象模式改变)和模式稳定性锁定(维持模式稳定)。
6.      批量更新锁:允许并行加载数据。
锁的兼容性:

SQL Server中死锁的错误号:1205
事务的ACID:
1.      原子性(Atomicity):事务要么全部执行,要么全部不执行。
2.      一致性(Consistency):需要遵守所有的约束以及其他的数据完整性规则,并且 完全的更新所有相关的对象(数据页、索引页)。
3.      隔离性(Isolation):每一个事务都与其他的任何事务完全的隔离。一个事务不会受到另一个事务动作的干扰。
4.      持久性(Durability):完成事务后,它的作用结果将永远存在于系统内。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-16945-1-1.html 上篇帖子: SQL Server中的用户自定义函数 下篇帖子: sql查询重复记录、删除重复记录方法大全
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表