zoukankan      html  css  js  c++  java
  • 事务的概念是什么,有哪些基本属性?


    数据库管理系统 - 逻辑单位-有限的操作序列!
    ACID属性:
    Atomicity : 原子性
    Consistency:一致性
    Isolation:隔离线
    Durability:持久性

    事务有哪几种隔离级别,请从弱到强分别类举说明?

    1.default:(默认)
    默认隔离级别,使用数据库默认的事务隔离级别
    2.read_uncommitted:(读未提交)
    这是事务最低的隔离级别,他允许另外一个事务可以看到这个事务未提交的数据,这种隔离级别会产生脏读,不可重复读和幻读
    3.read_committed(读已提交)
    保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据.这种事务隔离级别可以避免脏读,但是可能会出现不可重复读和幻读
    4.repeatable_read(可重复读)
    这种事务级别可以防止脏读,不可重复读.但是可能出现幻读.他除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读
    5.Serializable 串行化
    这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。防止了脏读、不可重复读、幻读

    在事务的并发操作中,可能出现的情况是哪些?

    脏读,不可重复读,幻读
    1.dirty reads 脏读
    一个事务正在对数据进行更新操作,但是更新还未提交,另一个事务这时也来操作这组数据,并且读取了前一个事务还未提交的数据,而前一个事务如果操作失败进行了回滚,后一个事务读取的就是错误的数据,这样就造成了脏读

    2.不可重复读
       一个事务多次读取同一个数据,在该事务还未结束时,另一个事务也对该数据进行了操作,而且在第一个事务两次读取之间,第二个事务对数据进行了更新,那么第一个事务前后两个读取到的数据是不同的,这样就造成了不可重复读

    3.幻读
    第一个数据正在查询某一条数据,这时,另一个事务又插入了一条符合条件的数据,第一个事务在第二次查询符合同一条件的数据时,发现多了一条前一次查询时没有的数据,仿佛幻觉一样,这就是幻读


    大多数数据库默认的事务隔离级别是哪个?MySql的是否一样,如果不一样请指出?

    MySql: Repeatable Read
    其他的Sqlservice,oracle : read committed

    结合Spring谈谈你对事务传播性的理解(文字和图解都可以)?

    在ssh开发中,我们一般将事务设置在Service层,当调用service一个方法进行数据库的操作时候
    能够保持我们使用的操作在一个事务中。
    如果在本service层中除了调用了Dao层方法,还调用其他类的service层方法,
    此时必须要保证调用的Service层的方法和我本身的方法在同一事务中,否则不能保证事务的一致性。
    此时就出现了事务的传播问题。Spring大多数情况使用 PROPGATION_REQUIRED:如果存在一个事务,
    则支持当前事务,没有事务则开启新的事务。

    Spring的事务控制有哪两个主要特性,请分别简单说明?

    传播级别和数据隔离级别!
    传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。

    Spring的事务框架设计理念的基本原则是什么?它有哪些事务管理方式,请分别说明下?

    理念:让事务管理的关注点与数据访问的关注点相互分离。
    方式:
    (1)编程式事务(spring推荐使用TransactionTemplate)
    (2)声明式事务
    声明式事务是基于AOP之上的。
    其本质是在执行方法前后进行拦截,在方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
    如下的代码只需要在方法上面加入注解@Transactional就可以进行事务操作。
    以删除促销为例,我们删除促销的时候会删除促销关联的产品,只有这两个操作都执行成功才算成功,所以整合成一个事务。

    声明式事务:可知编程式事务每次实现都要单独实现,但业务量大功能复杂时,使用编程式事务无疑是痛苦的,而声明式事务不同,声明式事务属于无侵入式,不会影响业务逻辑的实现。
    * 如果配置了声明式事务,在出现运行时异常时,事务会回滚,但是出现非运行时异常时,事务不回滚。
    * 如果配置了编程式事务,则不管出现什么异常,事务都会回滚。

  • 相关阅读:
    springBoot 与 springMVC的区别
    spring的IOC和AOP
    实现同步的三种方法
    台阶积水问题
    requsets模块和beautifulsoup模块
    爬虫
    rabbitMQ 消息队列
    Django框架
    mysql
    jQuery
  • 原文地址:https://www.cnblogs.com/yjyxzzz/p/11807504.html
Copyright © 2011-2022 走看看