【MySQL】浅谈事务与隔离级别

news/2024/11/9 2:41:17/

文章目录

  • 1. 事务概述
  • 2. 事务的特性
  • 3. 事务的隔离级别

1. 事务概述

什么是事务?

  • 在MySQL中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有InnoDB存储引擎才支持事务
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
  • 事务用来管理 DDL、DML、DCL 操作,比如 insert,update,delete 语句,默认是自动提交的

怎么设置事务为手动提交

set autocommit=0 禁止自动提交 
set autocommit=1 开启自动提交 

MySQL事务操作有哪些?

  • 开启事务
    • 任何一条DML语句(insert、update、delete)执行,标志事务的开启
    • 命令:BEGIN 或 START TRANSACTION
  • 提交事务
    • 成功的结束,将所有的DML语句操作历史记录和底层硬盘数据来一次同步
    • 命令:COMMIT
  • 回滚事务
    • 失败的结束,将所有的DML语句操作历史记录全部清空
    • 命令:ROLLBACK

举个例子

-- 设置MySQL的事务为手动提交(关闭自动提交)
select @@autocommit;
set autocommit = 0;-- 模拟账户转账
-- 开启事务 
begin;
update account set money = money - 200 where name = 'zhangsan';
update account set money = money + 200 where name = 'lisi';
-- 提交事务
commit;-- 如果转账中的任何一条出现问题,则回滚事务
rollback;

2. 事务的特性

image-20221213163432811


3. 事务的隔离级别

  • READ UNCOMMITTED——读未提交
    • 一个事务可以读取另一个未提交事务的数据,最低级别,任何情况都无法保证,会造成脏读。
  • READ COMMITTED——读提交
    • 一个事务要等另一个事务提交后才能读取数据,可避免脏读的发生,会造成不可重复读。
  • REPEATEABLE——可重复读
    • 就是在开始读取数据(事务开启)时,不再允许修改操作,可避免脏读、不可重复读的发生,但是会造成幻读。
  • SERIALIZABLE——序列化
    • 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。

image-20221213202242799

相关操作

-- 查看隔离级别 
show variables like '%isolation%; -- 设置隔离级别
/*
set session transaction isolation level 级别字符串
级别字符串:read uncommitted、read committed、repeatable read、serializable
*/
-- 设置read uncommitted
set session transaction isolation level read uncommitted;-- 设置read committed
set session transaction isolation level read committed;-- 设置repeatable read
set session transaction isolation level repeatable read;-- 设置serializable
set session transaction isolation level serializable;

参考:

  • 2022新版黑马程序员MySQL知识精讲+mysql实战案例_零基础mysql数据库入门到高级全套教程

http://www.ppmy.cn/news/3506.html

相关文章

如何测试一个空的 JavaScript 对象?

问题描述: 这个问题的答案是社区的努力。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。 在 AJAX 请求之后,有时我的应用程序可能会返回一个空对象,例如: var a {};我如何检查是否是这种情况? 解决方…

小蓝本 第一本 《因式分解技巧》 第七章 综合运用 笔记 (第七天)

小蓝本 第一本 《因式分解技巧》 第七章 综合运用 笔记 (第七天)前言换元法好题例2题目解法经验补充例3题目解法经验例5题目解法补充例9题目解法经验补充例10题目解法补充例11题目解法补充例13题目解法习题7题目题解错题题号改错前言 12天攻掉《因式分解…

OS@页面置换算法@抖动@工作集

文章目录页面置换算法页面算法评价最佳置换算法OPT例先进先出算法FIFO最近最久未使用算法LRU时钟置换算法(CLOCK/NRU)访问位的修改页面的换出首次扫描修改二次扫描页架未满页架已满小结改进型CLOCK算法CLOCKCLOCK^CLOCK抖动工作集MMF内存映射文件虚拟存储器性能影响因素页面置换…

代码随想录算法训练营第五十天|123.买卖股票的最佳时机III、 188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III 此题限定了买卖的次数,所以应该用几个状态来记录所对应得利润 至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。 dp数组及下标含义 一天一共就有五个状态, 0 没有操作 1 第…

【笔记】计算机组成原理复习重点——篇1

计算机组成原理复习重点笔记 计算机组成原理计算机体系结构 学科基础必修课 研究生入学考试全国联考45分,占比30% 64学时,4学分,上课56,实验8 教材:计算机组成原理(第二版 ) 唐朔飞 高等教育出版社 目录 第1篇 概论 第…

java中的反射和Class类

动态语言 VS 静态语言: 动态语言是一类在运行时可以改变其结构的语言,例如:新的函数对象甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化,通俗点说就是在运行时,代码可以根据某些条件改变自…

订单增2倍?如何利用促销手段瞄准圣诞季高意向顾客?

圣诞节作为一个类似于中国春节的节日,在12月的最后一周拉开帷幕,据有关业内人士称,作为拥有众多全球站的亚马逊电子商务平台在此次圣诞节的促销狂欢节中表现似乎稍显停滞,其作为电商领域的龙头企业,没能守住其销售总额…

C语言---指针初阶---总结

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​ 📣系列专栏:鹏哥带我学c带我飞 💬总结:希望你看…