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 数据库中 ...
随机推荐
- 谁偷偷删了你的微信?别慌!Python 揪出来
不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知. 相信每个人的微信通信录里都存在一些「僵尸粉」,他们默默地躺在联系人列表中,你以为对方还是朋友, ...
- 2020 安恒2月月赛 misc
题目链接:https://pan.baidu.com/s/19l54Nukt6evOr4UgbHMXIQ 提取码:1qbs 0x01 lemonEssence 咦?在kali打开是出错,改宽后图片变了 ...
- localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
在开启hadoop时候报错:localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 此时 ssh ...
- 读书小记--<态度>
前言 前段时间再读了吴军老师的<态度>,分享的是和女儿的日常书信.觉得收获很多,同时推荐他的<浪潮之巅><数学之美><大学之路>系列书籍. 下面是个人的 ...
- SPOJ Distinct Substrings
给定一个字符串,求不相同子串个数.每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同子串个数.总数为n*(n-1)/2,再减掉height[i]的和就是答案 #include< ...
- 分布式事务 --- BASE 理论
部分图片总结出自参考资料 问题 : Base 理论为什么会被提出,动机是什么 Base 和 ACID 的区别与联系 概述 上一篇我们知道CAP 理论,也知道由于现实中网络等原因,分区容错性这一元素大多 ...
- 【MySQL】安装及配置
" 目录 #. 概述 1. 什么是数据(Data) 2. 什么是数据库(DataBase, 简称DB) 3. 什么是数据库管理系统(DataBase Management System) 4 ...
- 解决Zookeeper无法启动的问题
在启动zookeeper集群的单个zookeeper节点时总是报如下错误 [root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh status JMX e ...
- Linux - 常用GUI软件
1. gdebi -- 可以代替Ubuntu software安装软件 2. System monitor -- 监控流量 3. uget -- 下载软件 4. Okular -- pdf reade ...
- iOS开发之通过Framework建立项目依赖
https://www.jianshu.com/p/d146db167bf3 项目开发时经常会遇到个别模块想打包成framework的情况,传统的打包方式太繁琐,反复测试时很麻烦,不如一个项目管理来得 ...