数据库中事务是什么意思?

来源:互联网 发布:深入浅出php 编辑:程序博客网 时间:2024/04/29 10:52

        什么是事务?我们知道,数据库是一个面向多用户的共享机制,因此数据库管理系统应当具备并发控制和封锁机制,保证数据库系统的正常运行。但是当多个用户访问数据库的时候,如果每一个用户程序一个一个的串行执行,则每一时刻只有一个用户执行对数据库的操作,其他用户必须等待,这样的话会严重影响数据库资源的使用。所以数据库管理系统必有能够保证多个用户同时使用数据库。但是这样会出现以下三个主要异常问题:

       脏读数据:当第一个用户修改数据时,第二个用户在第一个用户没有确认修改之前读取了该数据,这时可能会出现脏读现象。如果第一个用户确认了修改,第二个用户检索不到数据库中所修改的数据,有时这种现象也称为丢失修改。(看到的不是一回事)

        不可重复读:当某一个用户对某一行数据进行第一次读取过程后,另外一个用户对该数据进行了修改,从第一个用户的角度来看,如果再次读取原先的数据会发现与前次不同,这就是不可重复读现象。

       发生幻象:当第一个用户检查某张表的时候,没有发现某个值X,但是在该用户还没操作完成之前,另外一个用户插入了一个X值,结果,导致第一个用户认为数据库没有X值,而实际上数据库有这个值X。这就是幻象。

用户之间相互干扰,出现的以上问题,后果不堪设想。因此数据库系统采用事务的概念来解决这个问题。

        事务是一系列作为一个逻辑单元来执行的操作集合。它是数据库维护数据一致性的单位,它将数据库从一致状态转变为新的一致状态,说的简单一点就是,如果一组处理步骤要么全部发生要么一步也不执行,我们称该组处理步骤为一个事务。这样就保证了数据始终一致的状态,不至于破坏数据的完整性、可靠性。一个事务执行以后,DBMS会自动检查数据库中数据的一致性。

        确保数据的一致性是保证数据库里面的数据正确反映现实世界的前提。举个例子大家可能就清楚了,比如一个银行要将一笔钱从A->B;对数据库中的操作主要有两个步骤:一是从A账户中减去这笔钱;二是把B账户中的钱增加一笔。其实这两个步骤操作就是一个逻辑单元,就是一个操作集合,就是一个事务。这就要求两个步骤操作同步执行,要么它们都操作成功,要么都操作失败。如果一个操作失败,整个事务也就失败了,并且已经执行的操作都会被撤消,也就是回滚到先前的状态。

      

    

0 0
原创粉丝点击