java中如何修改事务的隔离级别
事务的特性:
原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 (多条语句要么都成功,要么都失败。)
一致性(Consistency)事务前后数据的完整性必须保持一致。转账(减钱,加钱)
隔离性(Isolation)事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性(Durability)持久性是指一个事务结束(一旦被提交或者回滚),它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
并发访问问题(不考虑隔离性):
1.脏读:A事务读取到B事务未提交或是已经提交的数据。
2.不可重复读:A事务读取到B事务已经提交的数据。导致A事务多次查询出来数据不一致。
3.虚读/幻读:A事务读取到B事务已经提交的数据。导致A事务多次查询出来数据不一致。这种情况比较少见,操作一万次还不一定能够遇见一次。
事务的隔离级别:
Java API,事务的隔离级别大致分为4种。在接口Connection中的setTransactionIsolation方法可以设置事务的隔离级别。
void setTransactionIsolation(int level)
throws SQLException
- 试图将此
Connection
对象的事务隔离级别更改为给定的级别。可能的事务隔离级别是Connection
接口中定义的常量。注:如果在事务处理期间调用此方法,则结果由实现定义。
-
-
- 参数:
level
- 以下Connection
常量之一:Connection.TRANSACTION_READ_UNCOMMITTED
、Connection.TRANSACTION_READ_COMMITTED
、Connection.TRANSACTION_REPEATABLE_READ
或Connection.TRANSACTION_SERIALIZABLE
。(注意,不能使用Connection.TRANSACTION_NONE
,因为它指定了不受支持的事务。)- 抛出:
SQLException
- 如果发生数据库访问错误,在关闭的连接上调用此方法,或者给定参数不是Connection
常量之一.
详细介绍下:
首先在数据库查看下自己数据库的隔离级别:
show variables like '%isolation%';
或
select @@tx_isolation;
void setTransactionIsolation(int level),level的参数分别是,1,2,4,8;
mysql默认隔离级别是:4
oracle默认隔离级别是:2
Connection.TRANSACTION_READ_UNCOMMITTED :level=1,会出现,脏读,不可重复读,虚读/幻读等情况。
Connection.TRANSACTION_READ_COMMITTED: level=2,会出现,不可重复读或是虚读/幻读。
Connection.TRANSACTION_REPEATABLE_READ
: level=4,会现虚读/幻读,可惜是万分之一的概率,我操作的时候,一次没有遇见过,尴尬。
Connection.TRANSACTION_SERIALIZABLE : level=8,不会出现上面的几种情况,虽然安全,但是效率不高。
一般使用的时候,根据Connetion连接对象设置参数:
数据库连接对象.setTransactionIsolation(参数);
参数:1,2,4,8
java中如何修改事务的隔离级别的更多相关文章
- 事务的隔离级别,mysql中开启事务、django中开启事务
目录 一.事务的特性 二.数据库中开启事务 三.Django中开启事务的两种方式 第一种 第二种 四.事务的隔离级别 隔离级别 如何查看mysql隔离级别? 修改事务的隔离级别 隔离级别解释 read ...
- 数据库事务的四大特性以及事务的隔离级别(mysql)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...
- 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&隔离级别
数据库事务的四大特性以及事务的隔离级别 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...
- 数据库事务的四大特性以及4种事务的隔离级别-以及对应的5种JDBC事务隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- MySQL事务的隔离级别
为什么需要隔离 当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,在介绍数据库提供的各种隔离级别之前,我们先看看如果不考虑事务的隔离性,会发生的几种 ...
- MySQL数据库事务的四大特性以及事务的隔离级别
一.事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因 ...
- 事务的隔离级别以及oracle中的锁
事务的概念及特性 事务,一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语 ...
- Java 事务的隔离级别
引言 之前关于事务的文章已介绍了事务的概念以及事务的四个属性(ACID),相信你对事务应该有所认识和了解. 本篇文章是关于事务的隔离性,介绍数据库提供的多种隔离级别. 数据库访问的并发性问题 所谓事务 ...
- SQL Server中的事务与其隔离级别之脏读, 未提交读,不可重复读和幻读
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
随机推荐
- Nginx做代理
0 查看日志 tail -f /var/log/nginx/access.log 1 Nginx代理配置语法 1.Nginx代理配置语法 Syntax: proxy_pass URL; Default ...
- 关于excuteQuery与execute()
excuteQuery是查询语句,如果是更新或者插入或报错,换成execute()就好了
- vue项目用npm安装sass包遇到的问题及解决办法
IDEA启动vue程序,浏览器访问时出现如下情况的关于node-sass的错误: 错误1: Module build failed (from ./node_modules/sass-loader/d ...
- github是什么,有什么用
转载连接:https://blog.csdn.net/obkoro1/article/details/68066441 写在前面:关于github的文章我已经写了两篇了,关于github个人网站搭建和 ...
- PostgreSQL日期加减
在PostgreSQL中可以直接对时间进行加减运算:. SELECT now()::timestamp + '1 year'; --当前时间加1年 SELECT now()::timestamp + ...
- 【PAT甲级】1080 Graduate Admission (30 分)
题意: 输入三个正整数N,M,K(N<=40000,M<=100,K<=5)分别表示学生人数,可供报考学校总数,学生可填志愿总数.接着输入一行M个正整数表示从0到M-1每所学校招生人 ...
- django登陆界面报错InternalError at /admin/polls/question/add/
登陆界面报错信息如下: 改为输入英文,正确
- 「NOI2016」区间
传送门 Luogu 解题思路 对于选出的区间,我们可以直接用线段树维护区间内单点被覆盖次数最大值. 那么解题重心便落在了选取方式上. 为了让最大值最小,考虑尺取,不能二分,降低效率而且不好写. 先将区 ...
- 学习JavaScript数据结构与算法---前端进阶系列
学习建议 1.视频学习---认知 建议:在中国慕课上找"数据结构"相关的视频教程.中国大学MOOC 推荐清华大学.北京大学.浙江大学的教程,可先试看,然后根据自身的情况选择视频进行 ...
- RobotFramework+Selenium2环境搭建与入门实例
一.安装包 1.Python(推荐使用ActivePython,这个版本PATH已经配好了,也安了一些像pip这样的包) ActivePython-2.7.2.5-win32-x86.msi 2.Wx ...