用户通常以一个有序操作的形式对数据库操作进行操作,如首先会添加一些数据,然后删除另一些数据,继而查询、修改一些数据。在这些操作过程中,为了保证其正确执行,数据库不允许其他用户操作或者或者系统异常将其打断,也不允许数据库的其他操作介入这个操作序列。数据库管理系统用“事务”这个概念来描述这样的操作序列。
事物的概念
将用户在数据库中的某些操作集合看作一个整体,在其有序执行的过程中不被其他操作影响,这样的操作集合就是事务。
事务(Transaction)是对数据库进行操作的集合。该集合是一个不可分割的具有逻辑功能的工作单元,集合中的操作在事务的一次执行中必须全部被执行或者全部不被执行。
在GBase 8t中的实际应用中,可以用“事务”描述的问题比比皆是,例如售票系统、转账系统、购物系统等。以银行系统为例,将一笔资金从银行的账号A转入银行账号B是一个操作序列(或操作集合),主要包括“由A转出X元”和“X元转入B”两个重要操作,这两个操作是不可分割的,否则,在“由A转出X元”操作之后,插入一个“账号B挂失的操作”这笔交易的资金将不知去向而造成数据丢失,并会由此引发很多问题。
在GBase 8t,中事务是由不同用户对数据库的不同操作而产生的,在储蓄系统中,用户UI进行银行转账是一个操作序列,可以用事务T1描述:用户U2进行取款也是一个操作序列,可以用事务T2描述:用户U3进行账户注销同样是一个操作序列,可以用事务T3描述。如果三个用户同时在储蓄系统中,同时进行他们各自的操作,即在储蓄系统的数据库中同时运行各自的事务,则这些事务就是在数据库中运行的并发事务,并发事务柏寒的操作就是并发操作。