java 事物_java事务

1、事务的四大特性

(1)原子性(Atomicity):

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对数据库有任何影响

(2)一致性(Consistency):

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。例如转账操作:A账户转入B账户1000元,A账户少了1000,B账户多了1000;事务结束后总金额保持不变。

(3)隔离性(Isolation):

隔离性是指当多个线程并发访问数据库时,比如同时访问一张表,数据库每一个用户开启的事务,不能被其他事务所做的操作干扰,多个并发事务之间,应当相互隔离。

例如同时有T1和T2两个并发事务,从T1角度来看,T2要不在T1执行之前就已经结束,要么在T1执行完成后才开始。将多个事务隔离开,每个事务都不能访问到其他事务操作过程中的状态。

(4)持久性(Durability):

持久性是指事务的操作,一旦提交,对于数据库中数据的改变是永久性的,即使数据库发生故障也不能丢失已提交事务所完成的改变。

2、事务的隔离级别

脏读:数据库的一个事务A正在使用一个数据但还没有提交,另外一个事务B也访问到了这个数据,还使用了这个数据,这就会导致事务B使用了事务A没有提交之前的数据。

不可重复读:在一个事务A中多次操作一个数据,在这两次或多次访问这个数据的中间,事务B也操作此数据,并使其值发生了改变,这就导致同一个事务A在两次操作这个数据的时候值不一样,这就是不可重复读。

幻读:一个事务重新执行一个查询,返回一套符合查询条件的行, 发现这些行因为其他最近提交的事务而发生了改变

隔离级别从低到高分为四级:

(1),Read uncommitted(读未提交):

写事务阻止其他写事务,避免了更新遗失。但是没有阻止其他读事务,可能会引发脏读

(2),Read committed(读已提交):

读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。

该隔离级别避免了脏读,但是却可能出现不可重复读。事务A事先读取了数据,事务B紧接了更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。

(3),Repeatable read(可重复读取):

读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。

避免了不可重复读取和脏读,但是有时可能出现幻读。这可以通过“共享读锁”和“排他写锁”实现。

(4),Serializable(串行化):

读加共享锁,写加排他锁。这样读取事务可以并发,但是读写事务之间都是互斥的,一个事务执行完,才执行下一个事务序列化是最高的事务隔离级别,同时代价也花费最高,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻像读。

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读和第二类丢失更新这些并发问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】C#之继承

C#之继承 一.继承的类型  在面向对象的编程中,有两种截然不同继承类型:实现继承和接口继承  1.实现继承和接口继承  *实现继承:表示一个类型派生于基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生…

java 学习计划_Java学习计划范例

Java学习计划范例Java学习计划好的计划是成功的一半,今天是在创新思维的第一节课,在这门课程的开始,一个有策略的、有目的性的计划是非常必要的,为了在以后的学习中能够达到最好的.效果,"坚持"是一把雕刻刀&…

SQL Server 2012自动备份

SQL 2012和2008一样,都可以做维护计划,来对数据库进行自动的备份。 现在做这样一个数据库维护的计划,每天0点对数据库进行差异备份,每周日0点对数据库进行完全备份,并且每天晚上10点删除一次过期备份(两个星…

mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

一、前言本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置二、Mycat分片配置mycat分片主要在scheam.xml,rule.xml这2个表中配置① scheam.xml:配置逻辑表以及对应使用的分片规则select user()这里小编主要对t_user表…

JS取消浏览器文本选中的方法

一 、问题的出现 今天在使用Easy-UI 的messager.alert()方法时候出现浏览器文本被选中,不知道其中是什么原因,如下图所示。 二 、解决思路 我最后的思路时在弹出消息框的同时,取消浏览器文本的选择,最后查找资料编写如下方法。  …

java 重构 if else_项目中的if else太多了,该怎么重构?

前言if else过多的话,一般都是用策略模式来进行重构,策略模式也非常的简单。先定义一个接口,各种处理分支实现这个接口,定义好 条件->处理类的映射关系,然后根据条件找到响应的处理类执行即可,当有新的分…

读书笔记:秘密

2017年立下了读30本书的旗子,现在这是第3本,是一本小说,东野圭吾的小说《秘密》。看小说也可以看出生活,但是是为了娱乐,是为了放松,小说本身挺好看的~引人入胜,一看到底类型。读书前…

mysql的student是什么意思_复习mysql

一、复习详尽如下:创建一个test库create database test;授权一个用户grant all privileges on *.* to xiang% identified by 1qazWSX;创建表create table student(id int not null);查询select * from tabel_name where 条件1 and 条件2增加insert into table_name …

算法复杂度的理解

算法复杂度的理解 from:http://blog.sina.com.cn/s/blog_4bab8e7f0102vmth.html算法复杂度分为时间复杂度和空间复杂度。 时间复杂度的计算 ​1.一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每…

php如何将mysql数据库中的admin字段赋值给session_php实现将Session写入数据库

/**author Fahy*数据库为mysql,*数据库名为session,表名为session,*表中字段包括PHPSESSID,update_time,client_ip,data*/class Session{private static $handler null;private static $ip null;private static $lifetime null;private st…

linux 脚本 java_Linux 通过脚本执行Java程序

由于要统计不同的IP,代码中应用了HashSet来存放IP地址。上述Java程序是在Windows下编写的,如果在Linux服务器上运行,只需要把上面文件的路径和文件更换了就可以了。2.编写好java程序后,将java程序打成jar文件(环境Linux)我将上述测…

Java开启/关闭tomcat服务器

© 版权声明:本文为博主原创文章,转载请注明出处 通过java代码实现Tomcat的开启与关闭 1.项目结构 2.CallTomcat.java package com.calltomcat.test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;…

python命令行调试django代码_Django shell调试models输出的SQL语句方法

在settings.py里,配置如下logging:LOGGING {version: 1,disable_existing_loggers: False,handlers: {console:{level:DEBUG,class:logging.StreamHandler,},},loggers: {django.db.backends: {handlers: [console],propagate: True,level:DEBUG,},}}使…

5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)...

5、如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a sample("ABCDEF",randint(5,6)) # print(a) # b1 {x:randint(1,4) for x in sample("ABCDEF",randint(3,6))} # b2 {x:randint(1,4) for x in sample("A…

Bresenham画椭圆算法

这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步。 算法步骤: (1) 输入椭圆的长半轴a和短半轴b。 (2) 计算初始值…

iOS MD5 (消息摘要算法5)

一、MD5定义 MD5即Message-Digest Algorithm 5(消息-摘要算法5),为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。…

“每日一道面试题”.Net中所有类的基类是以及包含的方法

闲来无事,每日一贴。水平有限,大牛勿喷。 .Net中所有内建类型的基类是System.Object毋庸置疑 Puclic Class A{}和 Public Class A:System.Object{}是等效的 System.Object包含了Finalize在内的8个方法。 公共实例方法: Virtual b…

JAVA怎么将整数反转_【leetcode刷题】[简单]7.反转整数(reverse integer)-java

反转整数 reverse integer题目给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [− 2^31, 2^31 − 1]。根…

Linux实战案例(2)实例讲解使用软连接的场景和过程

使用场景:使用软连接简化版本切换动作 进入操作目录, cd /opt/modules/ 1、创建软连接ln -s jdk1.8.0_131 jdk1.8ln -s spark-2.1.0-bin-hadoop2.7 sparkln -s hadoop-2.7.3 hadoop 2、删除软连接rm -rf hadooprm -rf sparkrm -rf jdk1.8 3、验证结果 …

java单车吧_暑假一个月,撸个共享单车后台

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼加解密差不多了,下一步开始写登录了。//先对称加密 key 和数据String key "j783420jfjyqalgr";String data "周"; // FBI通缉人 周String encrypt AESUtil.encrypt(data, key); // 向服务器传输…