博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java知识点总结(JDBC-事务)
阅读量:5930 次
发布时间:2019-06-19

本文共 1410 字,大约阅读时间需要 4 分钟。

Java知识点总结(JDBC-事务)

@(Java知识点总结)[Java, JDBC]

事务

事务基本概念

  • 一组要么同时执行成功,要么同时执行失败的 SQL 语句。是数据库操作的一个执行单元!
  • 事务开始于:

    • 执行 commit 或 rollback 语句。
    • 执行一条 DDL 语句,例如 create table 语句;在这种情况下,会自动执行 commit 语句。
    • 执行一条 DCL 语句,例如 grant 语句;在这种情况下,会自动执行 commit 语句。
    • 断开与数据库的连接。
    • 执行了一条 DML 语句,该语句却失败了;在这种情况下,会为这个无效的 DML 语句执行 rollback 语句。

事务的四大特点(ACID)

  • atomicity(原子性)

    • 表示一个事务内的所有操作是一个整体, 要么全部成功,要么全失败
  • consistency(一致性)

    • 表示一个事务内有 一个操作失败时 ,所有的更改过的数据都必须 回滚到修改前的状态 ;
  • isolation(隔离性)

    • 事务查看数据时 数据所处的状态 ,要么是另一并发事务 修改它之前 的状态,要么是另一事务 修改它之后 的状态,事务不会查看中间状态的数据。
  • durability(持久性)

    • 持久性事务完成之后,它对于系统的 影响是永久性的 。

事务并发处理可能引起的问题

  1. 读脏(dirty read):一个事务读取了另一个事务尚未提交的数据,
  2. 不可重复读(non-repeatable read):一个事务的操作导致另一个事务前后两次读取到不同的数据
  3. 幻读(phantom read):一个事务的操作导致另一个事务前后两次查询的结果数据量不同。

隔离级别

4个等级的事务隔离级别,在相同的数据环境下,使用相同的输入,执行相同的工作,根据不同的隔离级别,可以导致不同的结果。不同事务隔离级别能够解决的数据并发问题的能力是不同的。

  • SERIALIZABLE(串行化)

    • 不会出现任何并发问题,因为它是对同一数据的访问是串行的,非并发访问的;

性能最差

  • REPEATABLE READ(可重复读)(MySQL)

    • 防止脏读和不可重复读,不能处理幻读
    • 性能比SERIALIZABLE好
  • READ COMMITTED(读已提交数据)(Oracle)

    • 防止脏读,不能处理不可重复读和幻读;
    • 性能比REPEATABLE READ好
  1. READ UNCOMMITTED(读未提交数据)

    • 可能出现任何事物并发问题,什么都不处理。
    • 性能最好
MySQL隔离级别

MySQL的默认隔离级别为Repeatable read,可以通过下面语句查看:

SELECT @@`TX_ISOLATION`;

也可以通过下面语句来设置当前连接的隔离级别:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ ;//[4选1]
JDBC设置隔离级别

con.setTransactionIsolation(int level) :参数可选值如下:

Connection.TRANSACTION_READ_UNCOMMITTED;Connection.TRANSACTION_READ_COMMITTED;Connection.TRANSACTION_REPEATABLE_READ;Connection.TRANSACTION_READ_SERIALIZABLE。

转载地址:http://naevx.baihongyu.com/

你可能感兴趣的文章
获取屏幕分辩率及客户端信息
查看>>
RH253读书笔记(9)-Lab 9 Account Management Methods
查看>>
如何查看网卡究竟是千兆还是百兆
查看>>
111111111111111111111111
查看>>
Selenium学习(3) 鼠标操作
查看>>
linux下 tar解压 gz解压 bz2等各种解压文件使用方法
查看>>
win8 关于Adobe CS6系列软件Patch覆盖失败的问题(Photoshop CS6、Adobe Illustrator CS6、Adobe Fireworks CS6)...
查看>>
jstl遍历list的jsp
查看>>
SMG12232ZK标准字符点阵型液晶显示模块的演示程序[C51编程语言][MCS51并行接口方式]...
查看>>
LINQ
查看>>
转:POI操作Excel导出
查看>>
三种操作XML文件方法
查看>>
Ubuntu install TensorFlow
查看>>
poj 1152
查看>>
最近想写一个类似鬼泣 收集红魂的功能,陆续写点东西作为笔记
查看>>
基于HTML5的3D网络拓扑自动布局
查看>>
C语言基础
查看>>
(转)深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的...
查看>>
树结构练习——排序二叉树的中序遍历
查看>>
java gaoji 算法
查看>>