当前位置:网站首页>MySQL事务
MySQL事务
2022-08-05 09:55:00 【江南无故人】
事务的概念
事务由一组逻辑相关的DML语句(数据库操纵语言)组成,MySQL提供一种机制使这些语句要么全部执行成功,要么全部执行失败。
一个完整的事务需要满足四个属性:
原子性、一致性、隔离性、持久性
简称ACID:
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
事务为应用层服务,不需要数据库使用者考虑很多潜在的错误和并发等问题。
MySQL使用 Innodb 引擎才支持事务 。
show engines \G --查看数据库引擎

事务的属性
原子性:
一个事务中的所有操作,要么全部完成,要么全部不完成。事务在执行过程中发生错误,需要回滚到事务开始前的状态。
持久性:
事务结束后,对数据的修改是永久的,即使系统故障也不影响。
隔离性:
数据库允许多个事务并发读写数据,隔离性可以防止多个事务交叉执行导致数据不一致。
一致性:
事务执行前后,数据库完整性没有被破坏。保证了前三个属性就实现了一致性,当然一致性还需要数据库使用者操作得当。
事务的提交
提交方式有手动提交、自动提交
InnoDB的单条sql语句会被封装成事务,受自动提交影响
查看是否自动提交
关闭自动提交:
SET AUTOCOMMIT=0;

开启自动提交:
SET AUTOCOMMIT=1;

手动提交:
输入begin或者start transaction来开启一个事务
开启后不受自动提交影响,必须通过commit提交,数据才能持久化
操作异常时候,MySQL自动回滚,可以设置回滚点手动回滚,commit后回滚无效。
设置回滚点:
savepoint 回滚点名称;
rollback to 回滚点名称;
rollback; --回滚到最开始
事务的隔离级别
脏读:一个事务读到未提交的数据
幻读:一个事务读到新插入的数据
不可重复读:一个事务前后读取到的某项数据不同
读未提交【Read Uncommitted】:
所有的事务都可以看到其他事务没有提交的执行结果。
相当于没有隔离性,也会有很多并发问题,如脏读,幻读,不可重复读。
读提交【Read Committed】 :
大多数数据库的默认的隔离级别(不是 MySQL 默认的)。一个事务只能看到其他的已经提交的事务所做的改变。这种隔离级别会引起不可重复读。
可重复读【Repeatable Read】:
MySQL 默认的隔离级别,它确保同一个事务,在执行中,多次读取结果相同。但是会有幻读问题(MySQL该级别解决了幻读问题)。
串行化【Serializable】:
事务的最高隔离级别,对所有操作全部加锁,但是串行化会导致超时和锁竞争,效率很低,几乎不使用。
查看全局隔离级别:
SELECT @@global.tx_isolation;

查看当前会话隔离级别:
SELECT @@session.tx_isolation;
SELECT @@tx_isolation;


设置当前或者全局隔离级别:
set session/global transaction isolation level 隔离级别;
总结:
隔离级别越严格 ,安全性越高,但并发性越差
MySQL 读未提交 存在脏读、幻读、不可重复读的问题,
读提交存在 幻读、 不可重复读的问题。
边栏推荐
猜你喜欢

5.部署web项目到云服务器

Overall design and implementation of Kubernetes-based microservice project

leetcode: 529. Minesweeper Game

dotnet OpenXML 解析 PPT 图表 面积图入门

eKuiper Newsletter 2022-07|v1.6.0:Flow 编排 + 更好用的 SQL,轻松表达业务逻辑

5. Deploy the web project to the cloud server

mysql进阶(二十七)数据库索引原理

什么是CRM决策分析管理?

Concurrent CAS

营销建议 | 您有一份八月营销月历待查收! 建议收藏 !
随机推荐
Advanced usage of C language
深度学习21天——卷积神经网络(CNN):服装图像分类(第3天)
2022-08-01 Review the basic binary tree and operations
uniapp 连接ibeacon
无题十一
2022.8.3
科普大佬说 | 港大黄凯斌老师带你解锁黑客帝国与6G的关系
Pytorch深度学习快速入门教程 -- 土堆教程笔记(三)
无题七
Egg framework usage (1)
如何实现按键的短按、长按检测?
蚁剑webshell动态加密连接分析与实践
The technological achievements of Shanghai Konan were selected into the "2021 Shanghai Network Security Industry Innovation Research Achievement Catalog" by the Municipal Commission of Economy and Inf
Example of Noise Calculation for Amplifier OPA855
MySQL advanced (twenty-seven) database index principle
七夕浪漫约会不加班,RPA机器人帮你搞定工作
手写柯里化 - toString 理解
After Keil upgrades to AC6, what changes?
Dry goods!Generative Model Evaluation and Diagnosis
js 图形操作一(兼容pc、移动端实现 draggable属性 拖放效果)