数据库-数据库-MySQL(12)- 事务

简介: 目录事务简介事务操作 查看/设置事务提交方式 提交事务 回滚事务 事务四大特性(ACID)并发事务问题 脏读 不可重复读 幻读事务隔离级别

目录


事务简介

事务操作

             查看/设置事务提交方式

             提交事务

             回滚事务

事务四大特性(ACID)

并发事务问题

              脏读

              不可重复读

              幻读

事务隔离级别


image.png

事务简介

事务 是一组操作的集合 ,它是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么成功,要么同时失败。


举个例字就像张三向李四转账1000,但是完成这个操作,首先查看张三的余额有没有1000元,然后让张三的余额减少1000元,李四的余额加上1000元,

image.png

默认MySQL的事务是默认提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。



事务操作

数据准备

create table  account(
    id int auto_increment primary key  comment '主键ID',
    name varchar(10) comment '姓名',
    money int comment '余额'
) comment '账户表';
insert into  account(id, name, money)  values  (null,'张三',2000),(null,'李四',2000);

image.png

转账操作

--转账操作
--1.查询张三账户的余额
select *
from account
where name ='张三';
--2.将张三账户-1000
update  account set money = money -1000 where name = '张三';
--3.将李四账户+1000
update  account set money = money +1000 where name = '李四';

如果在3行上面写一段中午“程序抛出异常”,导致不能使李四的账户+1000元,即处理异常

查看/设置事务提交方式

SELECT @@autocommit;

SET @@autocommit = 0;

@@ autocmmit = 1是自动提交的意思,但是@@autocmmit = 0,是手动提交的意思


提交事务

COMMIT;


commit 命令用来将事务中的修改保到数据库中,同时结束事务。


回滚事务

ROLLBACK;


rollback 命令用来将数据库恢复到事务开始前的状态,即撤销事务所做的一切修改并结束事务


首先初始的时候


SELECT @@autocommit;

可以的到的是 @@autocommit = 1; 这个是等于1是自动提交的意思,然后我们通过


set  @@autocommit = 0; 将提交模式改为手动提交,如果执行完更新数据的语句,必须要手动的写一个 commit ,并执行,进行语句的提交


如果执行的语句出现了错误,那么就需要用回滚事务语句 rollback ,不让语句去执行,返回之前的方式


事务四大特性(ACID)

原子性:(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。


一致性:(Consistency):事务完成时,必须使所有的数据都保持一致状态。


隔离性:(lsolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。


持久性:(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。


优秀的数据库软件要确保每个事务都有ACID特性,并且具有很好的恢复特性,可以在机器有各种原因崩溃时恢复数据库


并发事务问题

image.png

脏读

开始时,事务A,执行select操作,然后执行update操作,但是没有完成3的操作即没有提交事务, 但是此时事务B的1select操作,查找的数据就是update更新后的数据,这种问题就是脏读

image.png

不可重复读

开始时,执行事务A的1操作,select id= 1,到数据库,然后并发事务B同时更新id= 1 数据,并提交到数据库,此时事务A的3操作,再去进行select 操作,发现前后数据不一样,这个问题就叫不可重复读

image.png

幻读

就是最开始在事务A中进行查找id 为1的数据,发现没有这个数据,然后并发事务B进行insert,插入操作,并提交到数据库,事务A,在进行第二步操作,插入数据,但是插入不了,因为id是主键,id是唯一的,我再进行3步操作,进行select操作,但是并没有发现这些数据,因为我们已经解决了不可重复读得问题,这种插入时提示有数据,但是再次查找时却找不到这中操作叫不可重复读

image.png


事务隔离级别

image.png

注:√ 代表存在,×代表不存在


--查看事务隔离级别

SELECT @@TRANSACTION_ISOLATION;



--设置事务隔离级别

SET, [SESSION| GLOBAL]  TRANSACTION ISOLATION   LEVEL  {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}


代码:

--查看事务隔离级别
select @@transaction_isolation;
--设置事务隔离级别
set session  transaction isolation level  read uncommitted;
set session  transaction isolation level repeatable read ;

(默认隔离级别是 repeatable read )

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
165 3
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
803 152
|
3月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
3月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
2月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的事务隔离级别
数据库并发访问时易引发数据不一致问题。如客户端读取到未提交的事务数据,可能导致“脏读”。MySQL通过四种事务隔离级别(读未提交、读已提交、可重复读、可序列化)控制并发行为,默认为“可重复读”,以平衡性能与数据一致性。
291 0
|
3月前
|
关系型数据库 MySQL 数据库
MySql事务以及事务的四大特性
事务是数据库操作的基本单元,具有ACID四大特性:原子性、一致性、隔离性、持久性。它确保数据的正确性与完整性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读未提交、读已提交、可重复读、串行化)加以解决。MySQL默认使用可重复读级别。高隔离级别虽能更好处理并发问题,但会降低性能。
179 0
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
3月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
4月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。

推荐镜像

更多