A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于是乎 初级黑马   /  2018-6-7 14:17  /  868 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题:什么是事务?
         事务就是逻辑上的一组操作,组成这组操作的各个单元要么全部成功,要么全都失败。

问题:事务四个特性?
  • 原子性:不可分割
  • 一致性:事务在执行前后,要保证数据的一致。
  • 隔离性:一个事务在执行的过程中,不应该受到其它事务的干扰。
  • 持久性:事务一旦结束,数据持久化到数据库。

问题:不考虑事务的隔离性,会产生什么问题?
  • 脏读:一个事务读取到另一个事务的未提交数据
  • 不可重复读:一个事务读取到另一个事务提交的数据(主要是指update),会导致两次读取的结果不一致。
  • 虚读(幻读): 一个事务读取到另一个事务提交的数据(主要是指insert),会导致两次读取结果不一致.

问题:对于上述问题如何解决?
         我们可以通过设置隔离级别来解决.
  • READ_UNCOMMITED 读取未提交,它引发所有的隔离问题
  • READ_COMMITTED  读已提交,阻止脏读,可能发生不可重复读与虚读.
  • REPEATABLE_READ 重复读  阻止脏读,不可重复读 可能发生虚读
  • SERIALIZABLE 串行化 解决所有问题 不允许两个事务,同时操作一个目标数据。(效率低下)

ORACLE  默认的是事务隔离级别  READ_COMMITTED
MYSQL 默认的事务隔离级别  REPEATABLE_READ

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马