事务的概述

1.基本概念

  • 将一条或者多条SQL看成一个整体,要么同时执行成功要么同时执行失败,这就是事务。


    事务举例:
    张三给李四转账500元钱,需要让三账户的余额-500,李四的账户余额+500,转账是一个连续的过程,要么同时成功,要么同时失败。不能出现张三转出了500块,而李四没收到的情况,这将是很严重的问题。

2.事务的基本使用

执行SQL语句之前开启事务,执行后没异常就提交,有异常就回滚

<1>开启事务:在执行一组sQL操作之前开始事务,start transaction;
提交了之后是不是不能回滚

<2>提交事务:在一组sQL执行成功之后提交事务,commit;

如果开启事务不提交,那么默认就是回滚【断开连接】
<3>回滚事务:在一组SQL执行出现异常之后回滚事务,rollback;

举例【执行后,发现查询结果出错则回滚,正确则提交】:

-- 张三给李四转账500元-- 开启事务
START TRANSACTION;-- 1.张三账户-500
UPDATE account SET money=money-500 WHERE NAME='张三';出错了...-- 2.李四账户+500
UPDATE account SET money=money+500 WHERE NAME='李四';-- 回滚事务
ROLLBACK;-- 提交事务
COMMIT;

补充–try里面使用commit提交事务,catch里面使用rollback回滚事务

3.事务的提交方式

1代表自动提交 0代表手动提交[COMMIT;]

  • 查询事务提交方式:SELECT @@AUTOCOMMIT;
SELECT @@autocommit;

在这里插入图片描述

  • 修改事务提交方式:SET @@AUTOCOMMIT=数字;
SET @@autocommit = 1;
SELECT @@autocommit;

在这里插入图片描述

4.事务的四大特征(ACID)

<1> 原子性(Atomicity)

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。

因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

<2> 一致性(Consistency)

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态。

也就是说一个事务执行之前和执行之后都必须处于一致性状态。

<3> 隔离性(isolcation)

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务。

不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

<4> 持久性(durability)

持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的。

即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

5.事务的隔离级别

  • 多个事务之间是隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
  • 产生条件是要在两个新连接中操作【如两台电脑,获取一台电脑连接数据库两次】,不是一个连接中的两个查询窗口。

<1>设置隔离级别
可重复读:两次读取的数据一样
不可重复读:两次读取的数据不一样【问题:多人操作时所看到的数据有差异】

在这里插入图片描述

<2>存在的问题
在这里插入图片描述

<3>查询隔离级别以及设置隔离级别

  • 数据库查询隔离级别:
    select @@tx_isolation;
    在这里插入图片描述

  • 数据库设置隔离级别(修改后需要重新连接):
    set global transaction isolation level 级别字符串;

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

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

相关文章

Spring Boot Debug调试

转载自 Spring Boot Debug调试 在使用maven插件执行spring-boot:run进行启动的时候&#xff0c;如果设置的断点进不去&#xff0c;要进行以下的设置。 1、添加jvm参数配置 在spring-boot的maven插件加上jvmArguments配置。 <project>...<build>...<plugins>…

centos磁盘安装与磁盘分区方案详解

转自&#xff1a; https://yq.aliyun.com/ziliao/56538 前几天自己研究了下几个linux系统&#xff0c;还是觉着centos要好一些。相对稳定点&#xff0c;起码桌面系统还是比 ubuntu 强安装centos并不难&#xff0c;安装方法多得是&#xff0c;像硬盘安装&#xff0c;U盘安装&…

存储过程内基础语法

学生表 1.定义变量及变量赋值方式 DELIMITER ; 分号前面必须要有一个空格 <1>DECLARE 变量名 数据类型 [DEFAULT 默认值]; 需求-- 定义一个int类型变量&#xff0c;并赋默认值为10 DELIMITER $$ CREATE PROCEDURE pro_test1() -- 没有; BEGIN-- 定义变量DECLARE nu…

nginx-配置基于ip或域名的虚拟主机

【0】README&#xff1a; nginx 可以配置多种类型的虚拟主机&#xff1a; 类型1&#xff09; 基于ip的虚拟主机&#xff1b; 类型2&#xff09;基于域名的虚拟主机&#xff1b; 类型3&#xff09;基于端口的虚拟主机&#xff1b; 【1】配置基于 ip 的虚拟主机的准备工作 …

Tomcat集群session复制与Oracle的坑

转载自 Tomcat集群session复制与Oracle的坑 问题描述 公司某个系统使用了tomcat自带的集群session复制功能&#xff0c;然后后报了一个oracle驱动包里面的连接不能被序列化的异常。 01-Nov-2017 16:45:26.653 SEVERE [https-jsse-nio-8443-exec-2] org.apache.catalina.ha.ses…

存储过程内基础语法---补充while循环

1.基础语法 while循环初始化语句;WHILE 条件判断语句 DO循环体语句;条件控制语句;END WHILE;2.举例 计算1~100之间的偶数和 【注&#xff1a;num只能numnum1 不能num,num1; 】 <1>存储过程内部查询 DELIMITER $CREATE PROCEDURE pro_test6() BEGIN-- 定义求和变量DE…

nginx停止,平滑重启命令

TERM, INT 快速关闭&#xff1b; QUIT 从容关闭&#xff1b; HUP 平滑重启&#xff0c;重新加载配置文件&#xff1b; USR1 重新打开日志文件&#xff0c;在切割日志时用途较大&#xff1b; USR2 平滑升级可执行程序&#xff1b; WINCH 从容关闭工作进程&#xff1b; 【荔…

IntelliJ IDEA Community(社区版)下载及安装自用版

IntelliJ IDEA Community&#xff08;社区版&#xff09;下载及安装自用版 估计是个开发都逃脱不了用IDEA的命运吧&#xff0c;这么好的软件&#xff0c;白嫖了好多年。感恩。 现在很多公司已经不让用商业版的破解版了&#xff0c;所以这里讲的是社区版。 区别&#xff1a; 商…

视图的概述

1.概念和特点 <1>概念&#xff1a;视图&#xff08;view&#xff09;是一种虚拟存在的表&#xff0c;本身并不包含数据。它是作为一个select语法查询到的结果集&#xff0c;以此为基表创建的一张虚拟表。对视图的操作对基表有直接影响,[视图中的数据发送了改变&#xff…

Tengine-Ngnix高级版

转载自 Tengine&#xff0d;Ngnix高级版 Tengine介绍 Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上&#xff0c;针对大访问量网站的需求&#xff0c;添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网&#xff0c;天猫商城等得到了很好的…

nginx的日志文件配置

1&#xff09;与nginx日志相关的指令有两条&#xff1a;log_format 和 access_log&#xff1b;log_format 设置日志格式&#xff1b;access_log 指定日志文件存放路径&#xff1b;2&#xff09;log_foramt2.1&#xff09;指令参数&#xff1a;log_format combined $remote_addr…

存储引擎和数据库锁

一.存储引擎 1.MySQL体系结构 数据库存储引擎是数据库最核心的部分&#xff0c;不同的存储引擎提供不同的存储机制、索引技巧等。也就是说不同的存储引擎底层对数据的组织方式不一样&#xff0c;从而导致性能和特点也不一样。 2.MySQL 当中常用的存储引擎&#xff1a; Inno…

因修改/etc/sudoers权限导致sudo和su不能使用的解决方法

【1】问题描述 [pacosonlocalhost ~]$ sudo sudo&#xff1a;/etc/sudoers 属于组 ID 180301&#xff0c;应为 0 sudo&#xff1a;没有找到有效的 sudoers 资源&#xff0c;退出 sudo&#xff1a;无法初始化策略插件【2】解决方法 遇见这种问题应该检查sudo文件拥有者名称 ---x…

一张图搞清楚Java异常机制

转载自 一张图搞清楚Java异常机制 下面是Java异常类的组织结构&#xff0c;红色区域的异常类表示是程序需要显示捕捉或者抛出的。 Throwable Throwable是Java异常的顶级类&#xff0c;所有的异常都继承于这个类。 Error&#xff0c;Exception是异常类的两个大分类。 Error Erro…

索引---B+Tree

1.索引的介绍 MySQL 索引&#xff1a;是帮助 MySQL 高效获取数据的一种数据结构。所以&#xff0c;索引的本质就是数据结构&#xff01;在表数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式指向数据&#xff0c; 这样就…

nginx应用领域分类+事件模型

【1】nginx应用领域分类&#xff1a; 类1&#xff1a;nginx反向代理与负载均衡类网站应用&#xff1b; 类2&#xff1a;nginx php/jsp 类网站应用&#xff1b; 类3&#xff1a;nginx静态内容web服务器应用&#xff1b; 【2】F5 指的是 BIG-IP 硬件 四/七层负载均衡交换机&a…

接口限流算法:漏桶算法amp;令牌桶算法

转载自 接口限流算法&#xff1a;漏桶算法&令牌桶算法背景 每一个对外提供的API接口都是需要做流量控制的&#xff0c;不然会导致系统直接崩溃。很简单的例子&#xff0c;和保险丝的原理一样&#xff0c;如果用电符合超载就会烧断保险丝断掉电源以达到保护的作用。API限流的…

索引失效的场景(面试)

1.where条件中有or关键字 -- 创建组合索引 CREATE INDEX idx_name ON student(NAME,age); -- 查询 SELECT COUNT(*) FROM student WHERE NAMEjack666; -- 命中索引 SELECT COUNT(*) FROM student WHERE NAMEjack666 and age666; -- 命中索引 SELECT COUNT(*) FROM student WH…

nginx负载均衡与反向代理

【1】负载均衡 1&#xff09;问题&#xff1a;如何在多个网络设备或服务器之间实现合理的业务量分配&#xff0c;使之不会出现一台设备过忙&#xff0c;而其他设备却没有充分使用的情况。2&#xff09;解决方法&#xff1a;要解决这一问题&#xff0c;可以采用负载均衡的方法&a…

JDBC入门案例及相关API概述

1 JDBC概念 问题&#xff1a;JDBC的本质是什么&#xff0c;解决了什么问题&#xff1f; 2.API讲解 <1> DriverManager的作用 问题&#xff1a;DriverManager有什么作用&#xff1f; 作用一&#xff1a;注册驱动 DriverManager.registerDriver(new Driver())&#…