zoukankan      html  css  js  c++  java
  • 事务笔记

    事务:
    	定义:是数据库管理系统(数据全量)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成
    	目的:数据一致和数据隔离
    	属性: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(你不知道一样东西,你也会不知道自己不知道这样东西)
  • 相关阅读:
    abp架构中加载公共css样式表和公共js的文件目录位置
    angular中[hidden]="expression"注意事项
    angular中使用canvas画布做验证码
    AngularJs页面跳转
    Angular学习笔记【如何正确使用第三方组件】
    【JavaScript权威指南】——逻辑与(&&)
    angular学习笔记【ng2-charts】插件添加
    OpenLayers v4.2.0 -----地图延迟加载;
    Sharepoint 图片库字段名称(Title)和对应的内部名称(InternalName)
    Sharepoint JSCOM 列表操作
  • 原文地址:https://www.cnblogs.com/2014-1130/p/11690771.html
Copyright © 2011-2022 走看看