JDBC事务特性

news/2024/10/30 21:30:26/

1、 事务的四种特性(ACID)

  • 原子性(Atomicity):原子性是指事务是一个不可分割的执行单元或者叫工作单位,事务中的操作,要么都发生,要么都不发生。

  • 一致性(Consistency):事务前后数据的完整性必须保持一致。(数据库的数据执行后前后要保存一致)

  • 隔离性(Isolation):事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间的数据要相互隔离,正常情况下数据库是做不到这一点的,可以设置隔离级别,但是效率会非常低。

  • 持久性(Duration):持久性是指一个事务一旦被提交,它对数据库中的数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

停电造成的问题

2、 并发访问问题

如果不考虑隔离性,事务存在3个并发访问问题。

1:脏读:一个事务读到了另一个事务尚未提交的数据。

2:不可重复读:一个事务读到了另一个事务已经提交(update)的数据。引发另一个事务,在事务中的多次查询结果不一样。

3:虚读/幻读:一个事务读到了另一个事务已经提交(insert)的数据。导致另一个事务,在事务中多次查询的结果不一致。

3 、隔离级别:解决问题

数据库规范规定了四种隔离级别,分别用于描述两个事务并发的所有情况。select @@tx_isolation;

1:read uncommitted 读未提交,一个事务读到另一个事务没有提交的数据。

a) 存在:3个问题(脏读,不可重复读,虚读)。

b) 解决:0个问题

2:read commited 读未提交,一个事务读到另一个事务已经提交的数据

a) 存在:2个问题(不可重复读,虚读)。

b) 解决:1个问题(脏读)

3:repeatable read:可重复读,在一个事务中读到的数据始终保持一致,无论另一个事务是否提交。

a) 存在:1个问题(虚读)。

b) 解决:2个问题(脏读,不可重复读)

4:serializable 串行化,同时只能执行一个事务,相当于事务中的单线程。

a) 存在:0个问题

b) 解决:3个问题(脏读,不可重复读,虚读)

  • 安全和性能对比

    • 安全性:serializable>repeatable read>read committed > read uncommitted

    • 性能:serializable<repeatable read<read committed<read uncommitted

  • 常见数据库的默认隔离级别:

    • MySQL:repeatable read

    • Oracle:read committed

  • 设置数据库的隔离级别


http://www.ppmy.cn/news/815406.html

相关文章

Redis - 一篇讲解根据 Key 前缀统计分析内存占用

问题描述 今天遇到一个 Redis 内存打挂了的问题&#xff0c;想看看哪个前缀 Key 占用内存比较大&#xff1f;&#xff01; 原因分析 我们都知道如果直接用 Keys 参数去做统计很危险&#xff0c;而且也只能统计数量&#xff0c;当然也可以排序去前几名的占用内存 Key 对应的大…

Android的游戏开发和iOS游戏开发

Android的游戏开发和iOS游戏开发   Android的技术是踩在新的加息和一天按一天它的市场份额取得领先。有这种奇妙的技术为乡亲们都在采用这种技术来控制他们的手机设备中的市场份额的巨大增长。的Andr​​oid还提供了应用程序在网络上为您的移动目标就业发展的第三方支持。通过…

ios和android游戏纹理优化和内存优化

1、2d游戏最占内存的无疑是图片资源。 2、cocos2d-x不同平台读取纹理的机制不同。ios下面使用CGImage,android和windows下是直接调用png库。我测试了下&#xff0c;使用png库直接读取png会比CGImage还要节约1mb左右内存&#xff08;图片所占内存4mb&#xff09;但是速度要比C…

iOS 平台游戏如何对接 GameCenter

现在随着手游市场的不断扩大&#xff0c;活跃在IOS平台下的游戏厂商为了增加玩家的粘性&#xff0c;以及为自己的游戏前途考虑都纷纷开始接入苹果国内公司的游戏平台GameCenter;今天呢我就把我对接GameCenter的一些心得以及操作分享给大家&#xff0c;内容很简单也希望在这方面…

ios模拟器装ipa包_ios模拟器怎么安装游戏应用教程

iOS模拟器是苹果Xcode IDE的一部分&#xff0c;主要用来为Mac&#xff0c;iPhone和iPad创建应用程序&#xff0c;为了给iOS模拟器打包应用程序&#xff0c;利用–package 在命令行上执行ADT并使用–target来指定其中一个目标。 比如&#xff0c;对于检测注释目标你可以执行下面…

在ios上运行安卓计算机软件,安卓竟然也能运行iOS,苹果怒了!

iPhone最大的优势是什么&#xff1f; 答案肯定是iOS。 很多人离不开iPhone&#xff0c; 就是因为其丝滑般的系统&#xff0c;强大的生态。 但是&#xff0c;如果这种优势不复存在呢&#xff1f; 也许你会说&#xff0c;怎么可能&#xff1f; 目前的安卓还比不了iOS。 这话说的没…

如何在Mac上玩安卓手游(支持各大安卓手机游戏数据同步)

很多小伙伴由于手机的型号不同,各大厂商的游戏端不同,导致在助手上下载的游戏不支持自己原来手机的里游戏资料。下面跟随小编来帮助你解决这个烦恼 首先我们需要借助腾讯手游助手 for mac版 腾讯手游助手 mac版是一款可以让用户在mac电脑上玩手机游戏的软件,腾讯手游助手m…

自锁电路分析与应用

原理图分享 今天工作中遇到一个设计很妙的电路&#xff0c;请教了一下硬件的工程师。 大家自己直接看图可以分享出这个电路的作用吗&#xff0c;可以在评论区告诉我哦&#xff01; 自锁电路 如上图就是一个自锁电路&#xff0c;和下面的电路一样&#xff1a; 电路现象描述&a…