SQL Server架构----数据库事务

WBOY
发布: 2016-06-07 15:48:07
原创
1064 人浏览过

ACID属性 事务是数据库的工作单元,通常包含一些读/写数据库的命令。一个工作单元要完成事务,必须满足ACID(原子性、一致性、隔离性和持久性)属性。 原子性(Atomicity): 意味着该事务的所有影响必须成功完成或者修改回滚。比如你去ATM取款,要么成功取

ACID属性

事务是数据库的工作单元,通常包含一些读/写数据库的命令。一个工作单元要完成事务,必须满足ACID(原子性、一致性、隔离性和持久性)属性。

原子性(Atomicity):意味着该事务的所有影响必须成功完成或者修改回滚。比如你去ATM取款,要么成功取出钱同时账户余额减少,要么取钱失败且余额不变。

一致性(Consistency):它要确保事务不能破坏数据库的完整性规则,必须使数据库处于一致的状态。比如你的系统要求库存水平不能为负值,性别栏位必须是男性或女性。为了保持一致,一个事务决不能破坏数据的任何限制或规则。

隔离性(Isolation):隔离是指保持运行未完成的事务的变化,同时独立于另一个。每个事务必须完全独立,并且它所做的更改不能被其他事务可读,即便SQL Server允许你通过改变隔离级别来寻求业务和性能要求之间的平衡。

持久性(Durability):一旦事务被提交,即使系统发生故障也要持续,对系统的影响是永久性的。在SQL Server中,事务提交之前,事务所做的更改相关的信息就被写入了事务日志。

SQL Server事务

在SQL Server中,有两种类型的事务,隐式和显式。它们的区别仅在于创建的方式不同。

隐式事务由SQL Server自动使用,目的是确保单一命令的ACID属性。例如,如果你写一个Update语句去更新10行,SQL Server会以隐式事务来执行它,以便应用ACID属性,这10行要么全部更新,要么都不更新。

显示事务是通过使用BEGIN TRANSACTION T-SQL命令启动,并通过使用COMMIT TRANSACTIONROLLBACK TRANSACTION命令来停止。

有效地提交一个事务,意味着使事务做的修改永久化,反之,回滚一个事务意味着撤消事务中所做的所有修改。显示事务常用于这种情况,即你想把ACID属性应用到一组更改,这些更改当成一个整体;如果业务逻辑需要你取消变更时,你也能够在任何时候回滚。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!