Transaction Managament(事务管理一、概念)
什么是事务
对于一个软件系统来说,我们需要相应的数据资源来保存体统状态。在对系统状态所依托的数据资源的时候,为了保证系统始终处于“正确”状态,我们必须对这些访问操作进行一些必要的限定。以保证系统状态的完整性。事务,就是以可控的方式对数据资源进行访问的一组操作。
为了保证事务执行前后,数据资源所承载的系统状态始终处于“正确”状态;事务本身持有4个限定属性:原子性,一致性,持久性,隔离性。
原子性:事务所包含的一组操作,要么全部成功,要么全部失败。
一致性:数据资源在事务执行前后保持一致的状态。
隔离性:事务的隔离性(4中隔离级别)主要规定了事务之间相互的影响程度。
Read Uncommitted: A事务可以读取B个事务没有提交的更新结果。
可能造成的问题是:
1、脏读:如果B事务回滚,那么A之前读到的就是一笔脏读数据。
2、不可重复读:在同一事务中对一笔数据多次读取,每次读取的结果不同。
3、幻读:同样一个查询在整个事务过程中多次执行,每次得出的结果集不一致。
Read Committed:这是大多数数据库采用的默认的隔离级别,一个事务更新操作的结果只有在该事务提交后其他事务才有可能读取到。
它可以避免脏读,但无法避免不可重复读和幻读。
Reaptable Read:保证在同一事务过程中,对同一笔数据的读取结果是一致的。可以避免脏读和不可重复读,但无法避免幻读。
Serializable:它是最严格的隔离级别,所有事务在这一级别下都必须按顺序执行,可以避免上面所有问题。但是性能却是最差的,并发下降,吞吐量下降,极 大影响系统性能。
持久性:一旦整个事务操作成功提交,对数据所做的变更将被记载下来,不可逆转。
最新文章
- Javascript中判断数组的正确姿势
- 使用socket方式连接Nginx优化php-fpm性能
- HTML简历表格
- 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
- C++设计模式-Factory工厂模式
- 如果你遇到,在IntelliJ IDEA里Ctrl+Alt+方向键用不了
- C#二进制文件的读写
- POJ C程序设计进阶 编程题#4:括号匹配问题
- Runtime的用法
- 负载均衡--大型在线系统实现的关键(上篇)(再谈QQ游戏百万人在线的技术实现)
- hdu 4714 Tree2cycle 树形经典问题
- CXF之五 拦截器Interceptor
- PC电脑运行Android模拟器总是弹出“视频源”窗体的原因和解决方案
- Solr4.8.0源码分析(24)之SolrCloud的Recovery策略(五)
- Python解析json字符串
- jasmine note
- 基于visual Studio2013解决面试题之0401非递归遍历二叉树
- 使用d3.v5实现条形图
- httpclient用getStatusCode
- Shader 入门笔记(二) CPU和GPU之间的通信,渲染流水线