数据库之事务

1.事务的定义

事务就是一组数据库操作序列(包含一个或多个SQL操作命令),事务会把所有操作看作是一个不可分割的整体向数据库系统提交或者撤销操作,所有操作要么都执行,要么都不执行。

2. 事务的ACID特性

原子性

一致性

隔离性

持久性

原子性:事务管理的基础,把事务中的所有操作看作是一个不可分割的工作单元,要么都执行,要么都不执行。

一致性:事务管理的目的,保证事务开始前和事务结束后数据的完整性和一致性。

隔离性:事务管理的目的,使多个事务并发操作同一个表数据时,每个事务都有各自独立的数据空间,事务的执行不会受到其他事务的干扰,可通过设置隔离级别解决不同的一致性问题。

持久性:事务管理的结果,当事务被提交以后,事务中的命令操作修改的结果会被持久保存,且不会被回滚。

3. 隔离级别的种类

未提交读 read uncommitted 允许脏读,不可重复读 幻读

提交读 read committed 不允许脏读 ,允许不可重复读 幻读

可重复读 repeatable read 不允许脏读 不可重复读 有条件的允许 幻读(innoDB存储引擎可以不允许)

串行读 serializable 都不允许,相当于表级锁定,但是会影响数据库的读写效果和性能。

4. 如何设置隔离级别?

bash 复制代码
设置隔离级别:
set global transaction isolation level 隔离级别名称;     
#全局级别的设置,可在所有会话有效,需要重新登录才可生效
 
set session transaction isolation level 隔离级别名称;    
#会话级别的设置,在当前会话会话中立即生效
 
 
设置全局事务隔离级别:
set global transaction isolation level read committed; ##永久生效
set @@global.tx_isolation='read-committed';   #重启服务后失效
 
设置会话事务隔离级别:
set session transaction isolation level repeatable read;
set @@session.tx_isolation='repeatable-read';  #重启服务后失效

查询隔离级别

like表示模糊查询 百分号相当于通配符*的作用

bash 复制代码
查询全局事务隔离级别:
show global variables like '%isolation%';
 
查询会话事务隔离级别:
show session variables like '%isolation%';

5.事务管理操作命令

bash 复制代码
begin;             #开启一个事务
....        create database/table    insert into    update XXX set   delete from      #事务性操作
savepoint XX;      #在事务中创建回滚点
rollback to XX;    #在事务中回滚操作到指定的回滚点位置
commit; 或 rollback;    #提交或回滚结束事务
相关推荐
韩立学长22 分钟前
基于Springboot的旧物公益捐赠管理系统3726v22v(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
苦学编程的谢1 小时前
Redis_4_常见命令(完)+认识数据类型和编码方式
数据库·redis·缓存
小光学长1 小时前
基于Vue的儿童手工创意店管理系统as8celp7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
睡前要喝豆奶粉1 小时前
.NET Core Web API开发需引入的三个基本依赖配置说明
oracle·c#·.netcore
小光学长1 小时前
基于Vue的地铁综合服务管理系统7949eg04(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Yeats_Liao1 小时前
时序数据库系列(二):InfluxDB安装配置从零搭建
数据库·后端·时序数据库
Yeats_Liao1 小时前
时序数据库系列(一):InfluxDB入门指南核心概念详解
数据库·后端·时序数据库·db
betazhou2 小时前
Oracle ADG ,DGBroker管理,异常断电重启主备库的状态
数据库·oracle·goldengate·dgbroker
岁岁岁平安3 小时前
本机 MongoDB 注册系统服务、启用security认证
数据库·python·mongodb
007php0073 小时前
某游戏互联网大厂Java面试深度解析:Java基础与性能优化(一)
java·数据库·面试·职场和发展·性能优化·golang·php