数据库之事务

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;    #提交或回滚结束事务
相关推荐
入瘾1 小时前
etcd 显示连接失败
数据库·chrome·etcd
本体智能2 小时前
预制指标、宽表、SQL、本体ABC:真正决定长期成本的,是一次变更会波及多少层
数据库·sql·本体神经网络·uino数据智能引擎
长安11082 小时前
数据库基础知识----数据库大观
数据库·oracle
瀚高PG实验室3 小时前
使用hgdbdeveloper开发工具导出数据后在异机恢复时报错
数据库·瀚高数据库
百结2144 小时前
PostgreSQL 初体验
数据库·postgresql
ward RINL4 小时前
Redis 安装及配置教程(Windows)【安装】
数据库·windows·redis
bingHHB5 小时前
金蝶云星空旗舰版 × 赛狐ERP:亚马逊卖家业财一体化的最后一公里
运维·数据库·集成学习
Nontee6 小时前
Redis高可用架构解析
数据库·redis·架构
淼淼爱喝水6 小时前
DVWA SQL 注入(Medium/High 级别)过滤绕过与防范实验(超详细图文版)
数据库·sql·网络安全
csdn_aspnet6 小时前
MySQL主从延迟根因诊断法,从网络、IO、SQL到参数,系统化定位高并发下的同步瓶颈
数据库·mysql·主从