事务学习
来源:互联网 发布:梦想小镇怎么同步数据 编辑:程序博客网 时间:2024/05/23 20:27
事务的四个特效
- 原子性:表示一个事务中的多个数据库操作是不可分割的单元,只有所以的操作都成功后,整个事务才能提交,事务中任何一个操作失败,之前成功的操作都必须撤回,让数据库回到事务开始的状态。
- 一致性:事务完成后,数据库所处的状态和它的业务规则保持一致。
- 隔离性:并发操作的时候,不同事务之间应该互相隔离,避免干扰。并不是完全无干扰,隔离级别越高,并发性越弱,根据具体业务需求来。
- 持久性:事务成功后,事务中所以的数据库操作比较持久化到数据库中。
事务的并发的问题
- 脏读:事务A读取了事务B未提交的更改数据,并在这个数据上进行了操作
- 不可重复读:一个事务范围内不同时间读取同一数据返回不同的值,因为在查询间隔中读取了其他事务对数据进行了修改提交。
- 幻读:更多的相对于表级别的的,A事务读取了B事务新增的数据,比如做统计是A事务2次统计之间B事务刚好新增了一条数据,这个时候就出现了幻读。
- 丢失更新A事务撤销覆盖了B事务的已经更新的数据,或者A事务提交覆盖了B事务已经提交的数据。丢失更新中事务隔离中是禁止的,了解即可。
事务隔离级别
- READ_UMCOMMITED:字面意思理解读未提交这种隔离级别是最低的运行脏读、不可重复读、幻读。
- READ_COMMITED:字面意思读已提交这种隔离级别级别不允许脏读、允许不可重复读和幻读
- REPEATABLE_READ:字面意思可重复读这种隔离级别不允许脏读、不可重复读,允许幻读。
- SERIALIZABLE:字面意思 可串行化的这种隔离基本最高都不允许。
默认一般是REPEATABLE_READ
Spring事务的传播
- PROPAGATION_REQUIRED:字面意思必须的当前方法必须运行中事务中,如果当前存在事务,则运行中该事务中,如果不存在,则会新起一个事务。
- PROPAGATION_SUPPORTS:字面意思支持表示该方法支持事务,如果当前存在事务,则运行中该事务中,如果不存在则以非事务的方法运行。
- PROPAGATION_MANDATORY:字面意思强制的表示该方法必须存在于事务中,如果不存在事务则会抛出异常。
- PROPAGATION_NOT_SUPPORTED:字面意思不支持表示该方法不支持事务,如果当前存在事务,事务将会被挂起
- PROPAGATION_REQUIRED_NEW:字面意思必须新的表示该方法必须运行中新的事务中,如果当前存在事务,该事务将会被挂起。
- PROPAGATION_NESTED:字面意思嵌套的表示如果当前已经存在一个事务,那么该方法将会在嵌套事务中运行。嵌套的事务可以独立于当前事务进行单独地提交或回滚。如果当前事务不存在,那么其行为与PROPAGATION_REQUIRED一样。
- PROPAGATION_NEVER:字面意思永不表示该方法不支持事务,如果当前存在事务,则会抛出异常
阅读全文
0 0
- 事务学习
- 事务学习
- MySQL事务学习 --> 分布式事务
- MySQL事务学习 --> 分布式事务
- 事务学习惯于
- C# 事务学习
- Spring事务的学习
- SQL事务的学习
- Spring事务学习
- sql学习.事务
- hibernate事务学习
- 事务(学习笔记)
- Spring事务的学习
- 学习事务隔离级别
- 学习spring事务模板
- Oracle 学习笔记-事务
- 黑马学习---------------数据库事务
- 数据库事务学习
- Android图片压缩(质量压缩和尺寸压缩)&Bitmap转成字符串上传
- dvwa v1.10 文件包含high级别的一个思路
- Unity一键图集生成工具,附源码 (基于NGUI和TexturePacker)
- Windows server 2012 安装IIS 并支持 asp
- 在Eclipse中显示.project和.classpath和.setting和classes文件目录
- 事务学习
- ArrayList,LinkedList,Vector
- 为ubuntu的软件创建桌面图标
- 解决启动Genymotion,在启动时,选择个人用户后,在EULA Acceptance界面黑屏
- Android分享到微信好友、朋友圈
- nwjs编写浏览器外壳
- bzoj 1052 覆盖问题 贪心 解题报告
- ImageLoader缓存Sdcard读写
- [Unity3D] 5.0 图集合并扩展工具,用于解决UGUI与AssetBundle打包造成资源包过大的问题