事物的定义:
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列 *** 作,要么完整地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有 *** 作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关 *** 作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
============
简单说事务就是一组 *** 作的集合,而且这组 *** 作必须全部执行成功否者回滚到所有 *** 作前的状态。
举个例子什么时候用到事务:
例如,在将资金从一个帐户转移到另一个帐户的银行应用中,一个帐户将一定的金额贷记到一个数据库表中,同时另一个帐户将相同的金额借记到另一个数据库表中。由于计算机可能会因停电、网络中断等而出现故障,因此有可能更新了一个表中的行,但没有更新另一个表中的行。如果数据库支持事务,则可以将数据库 *** 作组成一个事务,以防止因这些事件而使数据库出现不一致。如果事务中的某个点发生故障,则所有更新都可以回滚到事务开始之前的状态。如果没有发生故障,则通过以完成状态提交事务来完成更新。
下面这种是SQL Server中比较简单的查询SQL语句执行时间方法源码天空
,通过查询前的时间和查询后的时间差来计算的:
declare @begin_date datetime
declare @end_date datetime
select @begin_date = getdate()
select @end_date = getdate()
select datediff(ms,@begin_date,@end_date) as '用时/毫秒'
2:下面这种方法比较全面,将执行每个语句时采取的步骤作为行集返回,通过层次结构树的形式展示出来
set statistics profile on
set statistics io on
set statistics time ongo
<这里写上你的语句go
set statistics profile off
实际上事务本身是针对连接来说的,因此一个连接可能会多次进行事务 *** 作,但是一个事务只连接一次数据库,无论有多少条数据库 *** 作,也无论这些 *** 作是不是select,insert,update等复合起来的
事务管理对于一系列数据库 *** 作进行管理。
一个事务包含一个或多个SQL语句,是逻辑管理的工作单元(原子单元)。
一个事务开始于第一次执行的SQL语句,结束于Commit或Rollback或DDL语句。
注意:其中Commit,Rollback是显示的提交事务,而DDL语句是隐式的提交事务的。DDL语句的 *** 作是没有办法回滚的。
事务处理(TRANSACTION)是由一个或多个SQL语句序列结合在一起所形成的一个逻辑处理单元。事务处理中的每个语句都是完成整个任务的一部分工作,所有的语句组织在一起能够完成某一特定的任务。DBMS在对事务处理中的语句进行处理时,是按照下面的约定来进行的,这就是“事务处理中的所有语句被作为一个原子工作单位,所有的语句既可成功地被执行,也可以没有任何一个语句被执行”。DBMS负责完成这种约定,即使在事务处理中应用程序异常退出,或者是硬件出现故障等各种意外情况下,也是如此。在任何意外情况下,DBMS都负责确保在系统恢复正常后,数据库内容决不会出现“部分事务处理中的语句被执行完”的情况。
以上就是关于数据库中的事务是什么全部的内容,包括:数据库中的事务是什么、一次数据库事务耗时、包含在一个事务中的多条数据库 *** 作,会连接多次数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)