事务(一)——什么是事务,为什么会有事务,事务是做什么的?

什么是事务,为什么会有事务,事务是做什么的?

看到这个标题工作这么久,从来没有认真的思考过这个问题,今天参考一些资料做一些总结。

1、什么是事务

    (1) 事务的定义

        事务就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。

    (2)事务的使用:

        begin transaction commit/rollback.

        begin transaction 表示事务的开启标记,

        commit 表示事务的提交操作,表示该事务的结束,此时将事务中处理的数据刷到磁盘中物理数据库磁盘中去。

        rollback:表示事务的回滚操作,表示事务异常结束,此时将事务中已经执行的操作撤销回原来的状态。

2、事务的产生

        数据库中的数据是共享资源,因此数据库系统通常要支持多个用户的或不同应用程序的访问,并且各个访问进程都是独立执行的,这样就有可能出现并发存取数据的现象,这里有点类似Java开发中的多线程安全问题(解决共享变量安全存取问题),如果不采取一定措施会出现数据异常的情况。

        DBMS系统必须对这种并发操作提供一种相应的处理机制来保证,访问彼此之间不受任何干扰,从而保证数据库的正确性不受到破坏,为了避免数据库的不一致性,这种处理机制称之为“并发控制”,其中事务就是为了保证数据的一致性而产生的一种概念和手段(事务不是唯一手段)

3、事务的特征

    为了保证数据库的正确性与一致性事务具有四个特征:

    (1) 原子性(Atomicity)

        事务的原子性保证事务中包含的一组更新操作是原子的,不可分割的,不可分割是事务最小的工作单位,所包含的操作被视为一个整体,执行过程中遵循“要么全部执行,要不都不执行”,不存在一半执行,一半未执行的情况。

    (2)一致性(Consistency)

        事务的一致性要求事务必须满足数据库的完整性约束,且事务执行完毕后会将数据库由一个一致性的状态变为另一个一致性的状态。事务的一致性与原子性是密不可分的,如银行转账的例子 A账户向B账户转1000元钱,首先A账户减去1000元钱,然后B账户增加1000元钱,这两动作是一个整体,失去任何一个操作数据的一致性状态都会遭到破坏,所以这两个动作是一个整体,要么全部操作,要么都不执行,可见事务的一致性与原子性息息相关。

    (3)隔离性(Isolation)

        事务的隔离性要求事务之间是彼此独立的,隔离的。及一个事务的执行不可以被其他事务干扰。具体到操作是指一个事务的操作必须在一个事务commit之后才可以进行操作。多事务并发执行时,相当于将并发事务变成串行事务,顺序执行,如同串行调度般的执行事务。这里可以思考事务如何保证它的可串行化的呢?答案锁,接下来会讲到。

    (4)持续性(Durability)

        事物的持续性也称持久性,是指一个事务一旦提交,它对数据库的改变将是永久性的,因为数据刷进了物理磁盘了,其他操作将不会对它产生任何影响。

        

        在此事务的处理思想是与多线程安全的处理思想是类似的,面临问题是一致的都是解决资源共享安全问题,解决问题的思想也是进行串行化调度。那么由并发引起问题到底有哪些呢?

你可能感兴趣的:(java)