一个会话可以启动多个事务,会话是session,指一次连接。
事务是指一个操作单元,要么成功,要么失败,没有中间状态。
会话中可以完成多个事务。
例如:
会话好比,在应用程序中连接数据库要执行连接,然后会关闭,这算一次会话。
事务呢,就好比在打开会话后要执行程序中的某一个或多个对数据库进行的操作。
事物的最好例子就是转账,从一个账户赚钱到另一个账户,两张表的数据修改,要么全成功,要门全变回原样。
会话看 v$session
事务看 v$transaction
这两张视图通过 v$session.taddr= v$transaction.addr 连接,
事务是使数据库和文件系统分离的一个特性
oracle中有两个概念,会话与事务。很多朋友可能还不是很明白这二者到底有什么区别。
会话,即session,当你使用工具如sqlplus或者toad执行连接,连接到某个数据库的时候,就开启了一个会话,直到你关闭这次连接,这个会话才算结束。
事务,即transaction,是一个由多条SQL语句组成的工作逻辑单元,这些语句要么全部执行成功,要么全部不执行。只有commit,rollback,或者关闭工具的情况下,事务才会结束。当一个事务结束之后,下一个可执行的SQL语句自动开启一个新的事务。事务具有4个属性:原子性,一致性,隔离性,持久性。这里不具体说。
以上解释了什么是会话和事务,接下来用一个生动的例子来进一步说明它们俩的区别,相信大家就都能明白了。
比如你去银行办理业务,当你坐在柜台前跟工作人员面对面,开始办理业务的时候,这个时候‘会话’就开启了,那么这个‘会话’结束自然就是你办理好了所有的业务离开柜台的时候。
在办理业务的时候,比如你要先办一张银行卡,然后再往里面存一万块钱,那么这就相当于两个事务,一个是办理银行卡,一个是存钱。当你拿到银行卡的时候,相当于这个事务已经commit了,事务结束。当你开始存钱的时候,一个新的事务开启,存进去之后,第二个事务结束。
综上,一个会话可以包含很多个事务,会话是一次对数据库的连接,事务是一个工作单元。