ACID及事务隔离级别

2)ACID及事务隔离级别

ACID四大特性解释

  • 原子性(Atomicity):一个事务内的操作,要么全部成功,要么全部失败。
  • 一致性(Consistency):数据库从一个一致性状态,转移到另一个一致性状态。
  • 隔离性(Isolation):多个并发事务之间是隔离的。
  • 持久性(Durability):数据一旦提交,改变是永久的。

ACID靠什么保证

  • 原子性由undo log日志保证, 他记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql;
  • 一致性由其他的三大特性来保证;
  • 隔离性由MVCC来保证;
  • 持久性由redo log保证。重做日志缓冲(redo log buffer)和重做日志(redo log)组成,前者在内存中,后者在磁盘中。redo log 用来记录已成功提交事务的修改信息,并且把redo log持久化到磁盘

事务

(1)事务:

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

(2)事务的控制:

MySQL中的事务默认自动提交,我们可以改成手动

sql 复制代码
-- 查看事务的提交方式
select @@autocommit;
set @@autocommit = 0; # 设置0为取消自动提交,1为开启自动提交
-- 开启事务
begin; | start transaction;
-- 提交事务
commit;
-- 回滚事务
rollback;

(3)事务的隔离级别

隔离级别 脏读 丢失修改 不可重复读 幻读
Read Uncommitted 读未提交 可以出现 可以出现 可以出现 可以出现
Read committed 读已提交(Oracle 默认) 不能出现 可以出现 可以出现 可以出现
Repeatable Read 可重复读(mysql 默认) 不能出现 不能出现 不能出现 可以出现
Serializable 可串行化 不能出现 不能出现 不能出现 不能出现

解释:从上到下安全性由低到高,性能由高到低

sql 复制代码
-- 查看事务的隔离级别
select @@transaction_isolation
-- 设置事务隔离级别 session是当前的会话,global是全局
set [session|global] transaction isolation level {隔离级别} 
相关推荐
Elastic 中国社区官方博客14 小时前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless
一 乐14 小时前
高校实习信息发布网站|基于Spring Boot的高校实习信息发布网站的设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·高校实习信息发布网站
zgl_2005377914 小时前
源代码:跨数据库通用SQL语法解析与标注拆解
大数据·数据库·数据仓库·sql·etl·源代码管理
雪度娃娃15 小时前
存储器层次结构——磁盘硬盘存储
服务器·网络·数据库·计算机组成原理
暴力求解15 小时前
Mysql数据库基础
数据库·mysql·操作系统
意倾城16 小时前
MySQL最左前缀匹配原则
数据库·mysql
暴躁小师兄数据学院16 小时前
【AI大数据工程师特训笔记】第13讲:数据库性能手术刀
大数据·数据库·数据仓库·sql·postgresql
步十人16 小时前
【Redis】持久化机制
数据库·redis·缓存
Quincy_Freak17 小时前
银河麒麟aarch64如何高效做数据分析?分享一款内网离线数据分析利器
大数据·数据库·数据挖掘·数据分析·aarch64
香气袭人知骤暖17 小时前
PG数据库 Docker 容器自动备份方案
数据库·docker·容器