• 事务笔记


    事务:
    	定义:是数据库管理系统(数据全量)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成
    	目的:数据一致和数据隔离
    	属性:ACID, 原子性(Atomicty),一致性(Consistency),隔离性(Isolation),持久性(Durability)
    		隔离级别(四个级别逐渐增强),每个级别解决一个问题:
    			未提交读(READ UNCOMMITTED)。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)。
    			提交读(READ COMMITTED)。本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会读到不同的结果(不重复读)。
    			可重复读(REPEATABLE READ)。在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同样的SELECT操作读到的结果会是一致的。但是,会有幻读现象(稍后解释)。
    			串行化(SERIALIZABLE)。读操作会隐式获取共享锁,可以保证不同事务间的互斥。
    			解释:
    				脏读:事务发生回滚,事务未提交
    				不可重复读:同一个事务中,另一个事务提交了新数据,B读取A数据会导致两次读取不一致
    					https://segmentfault.com/a/1190000017755376
    				幻读:解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。但是,如果另一个事务同时提交了新数据,本事务再更新时,就会神奇的发现了这些新数据
    			InnoDB默认的隔离级别是REPEATABLE READ,可重复读 
    		传播行为:7种事务传播行为,确定客户端和被调用端的事务边界
    			PROPAGATION_REQUIRED(XML文件中为REQUIRED)表示当前方法必须在一个具有事务的上下文中运行,如有客户端有事务在进行,那么被调用端将在该事务中运行,否则的话重新开启一个事务。(如果被调用端发生异常,那么调用端和被调用端事务都将回滚)
    			PROPAGATION_SUPPORTS(XML文件中为SUPPORTS)表示当前方法不必需要具有一个事务上下文,但是如果有一个事务的话,它也可以在这个事务中运行
    			PROPAGATION_MANDATORY(XML文件中为MANDATORY)表示当前方法必须在一个事务中运行,如果没有事务,将抛出异常
    			PROPAGATION_NESTED(XML文件中为NESTED)表示如果当前方法正有一个事务在运行中,则该方法应该运行在一个嵌套事务中,被嵌套的事务可以独立于被封装的事务中进行提交或者回滚。如果封装事务存在,并且外层事务抛出异常回滚,那么内层事务必须回滚,反之,内层事务并不影响外层事务。如果封装事务不存在,则同PROPAGATION_REQUIRED的一样
    			PROPAGATION_NEVER(XML文件中为NEVER)表示当方法务不应该在一个事务中运行,如果存在一个事务,则抛出异常
    			PROPAGATION_REQUIRES_NEW(XML文件中为REQUIRES_NEW)表示当前方法必须运行在它自己的事务中。一个新的事务将启动,而且如果有一个现有的事务在运行的话,则这个方法将在运行期被挂起,直到新的事务提交或者回滚才恢复执行。PROPAGATION_NOT_SUPPORTED(XML文件中为NOT_SUPPORTED)表示该方法不应该在一个事务中运行。如果有一个事务正在运行,他将在运行期被挂起,直到这个事务提交或者回滚才恢复执行
    			参考:https://juejin.im/post/5ae9639af265da0b926564e7
    

      

    Unkonw Unkonw(你不知道一样东西,你也会不知道自己不知道这样东西)
  • 相关阅读:
    跨域资源共享 CORS 详解
    Vue.js 与 Laravel 分离
    Laravel 5.4+Vue.js 初体验:Laravel下配置运行Vue.js
    移动端web及app设计尺寸
    另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新
    vue2.0 keep-alive最佳实践
    教你用Cordova打包Vue项目
    oracle_数据处理
    oracle_集合函数
    oaracel 函数_行转列
  • 原文地址:https://www.cnblogs.com/2014-1130/p/11690771.html
Copyright © 2020-2023  润新知