数据库事务隔离级别

来源:互联网 发布:mysql运行原理 编辑:程序博客网 时间:2024/06/06 04:09

数据库事务:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全部不做,是一个不可分割的工作单位。

     对数据库的操作全都是以事务的方式进行!

事务的开始和结束可以由用户显示的进行控制,如果用户没有显示的定义事务,则由数据库管理系统按默认规定自动化分事务。

     事务的ACID特性:

    ①. 原子性(Acomicity):通俗的说就是该事务中包含的操作要么做,要么都不做。

    ②. 一致性(Consistency):事务执行的结果必须是由一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交        的结果时,就说数据库处于一致性状态。

    ③. 隔离性(Isolation):一个事务的执行不能被其他事务干扰。这就涉及到数据的个事务隔离级别。

            ④. 持久性()Durbility):也叫永久性,事务一旦成功提交,它对数据库的改变就是永久的。

    接下来我们看看事务的生命周期:

下来我们看看事务隔离级别:

数据库事务的隔离级别有4个,由低到高依次为Read uncommittedRead committedRepeatable readSerializable,这四个级 别可以逐个解决脏读不可重复读幻读这几类问题。

   

       下面我们就来看一下hibernate配置隔离级别:在Hibernate的配置文件中可以显式的设置隔离级别。每一种隔离级别都对应一个整数: 

1:Read Uncommitted 

2:Read Committed 

4:Repeatable Read 

8:Serializable 

例如,以下代码把hibernate.cfg.xml文件中的隔离级别设为Read Committed: 

hibernate.connection.isolation=2 

对于从数据库连接池中获得的每个连接,Hibernate都会把它改为使用Read Committed隔离级别。 

   注:MySQL的默认隔离级别就是Repeatable read。





原创粉丝点击