关键词:
事务可从多种层面进行分类,数据库角度、java角度、编程角度:
数据库角度
根据数据源的数量分为本地事务和全局事务
本地事务:普通事务,独立的一个数据库,保证在该数据库上操作的ACID。
分布式事务:涉及两个或多个数据库源的事务,即跨越多台同类或异类数据库的事务(由每台数据库的本地事务组成的),分布式事务旨在保证这些本地事务的所有操作的ACID,使事务可以跨越多台数据库;
java角度
根据规范分为JDBC事务和JTA事务
JDBC事务:普通事务,即数据库事务中的本地事务,通过connection对象控制管理。
JTA事务:JTA指Java事务API(Java Transaction API),是Java EE数据库事务规范, JTA只提供了事务管理接口,由应用程序服务器厂商(如WebSphere Application Server)提供实现,JTA事务比JDBC更强大,支持分布式事务(当然也支持本地事务)。
编程角度按
根据是否通过编程分为声明式事务和编程式事务
声明式事务:通过XML配置或者注解实现,更为简单
编程式事务:通过编程代码在业务逻辑时需要时自行实现,粒度更小。
----------------------------------------------------------------------------------
接下来从Spring层面上,让我们总结一下事务的隔离级别和传播行为。
隔离级别
有5大隔离级别,这是在TransactionDefinition接口中定义的。
1、ISOLATION_DEFAULT:
用底层数据库的默认隔离级别,即数据库管理员设置成什么就是什么;
2、ISOLATION_READ_UNCOMMITTED(未提交可读):
最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读)
3、ISOLATION_READ_COMMITTED(提交可读):
一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读)、sql server的默认级别
4、ISOLATION_REPEATABLE_READ(可重复读):
可重复读,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(该隔离基本可防止脏读,不可重复读(重点在修改),但会出现幻读(重点在增加与删除))(MySql默认级别,更改可通过set
transaction isolation level 级别)
5、ISOLATION_SERIALIZABLE(序列化):
代价最高最可靠的隔离级别(该隔离级别能防止脏读、不可重复读、幻读)
默认为isolation_default(底层数据库默认级别),其他四个隔离级别跟数据库隔离级别一致。
备注:
幻读:同样的事务操作过程中,不同时间段多次(不同事务)读取同一数据,读取到的内容不一致(一般是行数变多或变少)。
不可重复读:同一事务中,多次读取内容不一致(一般行数不变,而内容变了)。
丢失更新:两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的;
脏读:一个事务读取到另外一个未提及事务的内容,即为脏读。
传播行为
可见:https://www.cnblogs.com/yanze/p/10249708.html
数据库事务的4大特性与隔离级别(代码片段)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴原子性(Atomicity) 原子性是指事务包含的所有操作要么全... 查看详情
数据库事务的四大特性以及事务的隔离级别-与-spring事务传播机制&隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴原子性(Atomicity) 原子性是指事务包含的所... 查看详情
事务的概念及特性
事务是作为单个逻辑工作单元执行的一系列操作多个操作作为一个整体向系统提交,要么都执行,要么都不执行事务是一个不可分割的工作逻辑单元事务的特性1,原子性 事务是一个完整的操作,事务的各步骤操作是不可分... 查看详情
[转]事务传播
原文链接:事务的传播行为(讲得比较好) (2011-11-1417:12:48)转载▼标签: 杂谈分类: 数据库文章一:我们都知道事务的概念,那么事务的传播特性是什么呢?(此处着重介绍传播特性的概念,关于传播特性的相关配置... 查看详情
关系型数据库事务的acid特性与实现
参考技术AACID是为保证事务(transaction)是正确可靠的,所必须具备的四个特性:以A给B转账100元为例:MySQL事务是由InnoDB存储引擎实现的。可以用如下的命令显式的开启事务:另外,在自动提交(autocommit)模式下,我们执行的每一... 查看详情
事务的四大特性
务四大特性(简称ACID) 1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。3、隔... 查看详情
线性分类器与非线性分类器的区别是什么?有哪些优劣特性?
线性分类器与非线性分类器的区别是什么?有哪些优劣特性?线性分类器线性分类器就是用一个“超平面”将两个样本隔离开,如: (1)二维平面上的两个样本用一条直线来进行分类; (2)三维立体空间内的两个样本... 查看详情
事务四大特性
事务应该具有4个属性:原子性、一致性、隔离性、持久性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态变... 查看详情
索引/事务bing
...的聚簇索引(clusteredindex)vs非聚簇索引(b+树)事务特性数据库储存策略事务的实现[隔离级别](https:// 查看详情
innodb事务不能只懂acid(代码片段)
本文主要是对MySQL事务的知识点进行归纳总结,除了ACID之外的一些比较重要的知识点,多了解对我们对数据库的使用有一定的帮助数据库事务是数据库系统与文件系统的重要区别之一,就是因为有了事务,数据库系统才成为大众存储... 查看详情
事务的隔离级别和传播特性
脏读:当一个事务读取另一个事务未提交的内容,之后由于另一个事务出现了异常回滚了事务,结果造成读取的数据不一致不可重复读:指一个事务多次读取同一数据,而另一个事务多次对数据进行了修改的操作,这样就导致了... 查看详情
9-02事务的概念及特性
事务的概念:事务的作为单个逻辑工作单元一系列操作及多个操作作为一个整体向系统提交,要么都执行,要么都不执行,事务是一个不可分割的单个逻辑单元。转账过程就是一个事务。它需要两条UPDATE语句来完成,这两条语句... 查看详情
spring事务源码解析
1、数据库事务特性1.1 ACID特性事务(Transaction)是数据库系统中一系列操作的一个逻辑单元,所有操作要么全部成功,要么全部失败。事务是区分文件存储系统(关系型数据库)与Nosql数据库的重要特性之一,其存在的意义是... 查看详情
redo日志undo日志与事务隔离性(代码片段)
文章目录事务一、事务及其特性1、事务概念2、事务的四大特性:ACID二、事务操作1、开启事务2、提交事务I.自动提交II.隐式提交3、终止事务(回滚)自动回滚4、保存点三、redo日志1、问题引入2、redo日志的通用结构3、redo日志... 查看详情
数据库四大特性;
...隔离性(Isolation),持久性(Durability)。原子性,整个事务是不可分割的,要么全部执行,要么全部不执行;一致性,事务的执行结构也要与业务的逻辑保持一致;隔离性,多个事务之间隔离开来,互不影响;持久性,一旦事... 查看详情
三大框架之hibernate生成策略与缓存策略(主键生成策略持久化持久化类划分一级缓存事物管理)
...缓存什么是缓存一级缓存一级缓存特点一级缓存内部结构事务管理什么是事务事务特性事务的隔离级别Hibernate设置事务的隔离级别事务业务层连接Hibernate生成策略与缓存策略主键生成策略主键分类自然主键主键本身就是表中的一... 查看详情
事务与自动提交
事务与自动提交现在通过PDO连接上了,在开始进行查询前,必须先理解PDO是如何管理事务的。事务支持四大特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability)。通俗地讲,在一个... 查看详情
什么是事务事务特性事务隔离级别spring事务传播特性
1.什么是事务:事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败)。2.事务特性:事务特性分为四个:原子性(Atomicity)、一致... 查看详情