一、事务

简单点说,事务就是一件事情。所有与事务相关的内容都是围绕这一件事情展开的。

二、事务的特性:ACID

A:Atomicity(原子性),事务必须是一个不可分割的整体。

C:Consistency(一致性),执行完数据库操作后,数据不会被破坏。如:从 A 账户转账到 B,要保证 A 账户扣钱后,B 账户能增加对应的钱数。

I:Isolation(隔离性),多个人对同一条数据同时进行操作时,若不加以控制,会产生非常大的麻烦。而这个控制就是指隔离性。

D:Durability(持久性),若执行一条 insert 语句,数据库必须保证一条数据永久地存放到数据库中。

事务的 ACID 特性,都是为了保证数据的一致性。隔离性是保证事务一致性的手段。

三、事务的隔离级别(Transanction Isolation Level)

上面说过,事务的隔离性。所说的控制,就是指这里的隔离级别。

(1)READ_UNCOMMITED:读未提交

(2)READ_COMMITED:读已提交

(3)REPEATABLE_READ:可重复读

(4)SERIALIZABLE:

从上往下,并发性越来越差,安全性越来越高。

四、事务中存在的问题

(1)脏读——事务 A 读取了事务 B 未提交的数据,并在这个基础上又做了其他操作。

(2)不可重复读——事务 A 读取了事务 B 已提交的更改数据。

(3)幻读——事务 A 读取事务 B 已提交的新增的数据。

不论是在什么情况下,脏读都是不被允许的。

五、事务的隔离级别与事务中存在的问题的对应关系

其实事务的隔离级别的存在本身就是为了解决事务中出现的问题。

MySQL 默认的隔离级别为 READ_COMMITED。

需要提醒的是,这里所说的事务隔离级别规范是 JDBC 提出来的。

到数据库级,隔离级别是通过锁来控制的,当插入数据时,锁定表,叫“锁表”。当更新数据时,锁定行,叫“锁行”。

六、总结为一张图

Java基础——事务的更多相关文章

  1. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  2. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  3. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  4. JAVA基础英语单词表(下)

    quantity                     / 'kwɔntiti /                    量,数量 query                             ...

  5. Java 基础知识总结

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  6. 学习Spring必学的Java基础知识(1)----反射(转)

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  7. 学习Spring必学的Java基础知识(1)----反射

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  8. Java基础学习(1)——反射

    反射就是把Java类中的各种成分映射成相应的Java类(主要用于框架开发) 反射的基石–>Class类 Java程序中的各个类属于同一事物,描述这类事务的Java类名就是Class. Class ...

  9. Java面试系列--java基础

    Java基础总结 JAVA中的几种基本数据类型是什么,各自占用多少字节. 八大基本数据类型,byte:8位,short:16位,int:32位,long:64位,float:32位,double:64 ...

随机推荐

  1. 在DataTable中执行DataTable.Select("条件")返回DataTable;

    转:http://blog.csdn.net/hcf_force/article/details/7779062 1.在DataTable中执行DataTable.Select("条件&qu ...

  2. 【网络编程】——windows socket 编程

    测试demo #include <winsock2.h> #include <stdio.h> #include <string.h> #include <s ...

  3. [AX2012 R3]关于Alerts

    AX2012提供两种类型的Alert,Change-based alert和Due-date-based alert,前者用于在对新建记录.删除记录.记录的某个指定字段被改变的时候发出提醒,后者则是用 ...

  4. [转]mac 10.9.4下配置apache

    出处:http://yjmyzz.cnblogs.com mac 10.9.x已经自带了apache,可按如下步骤开启: 1.启动 sudo apachectl start 启动后,访问 http:/ ...

  5. IT项目经理成长手记

    1.流程化,项目化,工业化: 2.启动,规划,实施,监控,收尾.五个过程 3.需求管理,项目策划,项目监控,集成项目管理,定量项目管理,供应商协议管理,风险管理. 4.项目经理是熬出来的,伟大都是熬出 ...

  6. nodejs初窥

    1. node.js不是js应用,而是js运行平台.Node.js采用C++编写,是一个js的运行环境. 2. node.js采用事件驱动.异步编程,为网络服务而设计.Node.js的网络应用模块包括 ...

  7. 如何复制DataRow(dataTabel中的行)

    由于需要对dataTabel中的行进行上移和下移操作: row 1      行号0 row2       行号1 row3       行号2 例如将row3上移一行,即row2和row3对调位置. ...

  8. SQL语句中将Datetime类型转换为字符串类型

    0 Feb 22 2006 4:26PM  CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0) 1  02/22/06  CONVERT(CHAR(8), CURRENT_ ...

  9. STL中的map/multimap小结

    (1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...

  10. 《Linux程序设计》--读书笔记---第十三章进程间通信:管道

    管道:进程可以通过它交换更有用的数据. 我们通常是把一个进程的输出通过管道连接到另一个进程的输入: 对shell命令来说,命令的连接是通过管道字符来完成的: cmd1    |     cmd2 sh ...