当前位置:网站首页>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 读未提交 存在脏读、幻读、不可重复读的问题,
读提交存在 幻读、 不可重复读的问题。
边栏推荐
- 上海控安技术成果入选市经信委《2021年上海市网络安全产业创新攻关成果目录》
- express hot-reload
- 【zeno】为zeno增加子模块/新节点的最小化的例子
- 歌词整理
- PAT Grade B-B1020 Mooncake(25)
- Excuse me, guys, is it impossible to synchronize two databases in real time using Flink SQL CDC?
- 无题五
- IDEA performs the Test operation, resulting in duplicate data when data is inserted
- my journal link
- Qiu Jun, CEO of Eggplant Technology: Focus on users and make products that users really need
猜你喜欢
开源一夏|OpenHarmony如何查询设备类型(eTS)
19. Server-side session technology Session
MySQL内部函数介绍
哪位大佬有20年4月或者1月的11G GI和ojvm补丁呀,帮忙发下?
阿里顶级架构师多年总结的JVM宝典,哪里不会查哪里!
茄子科技CEO仇俊:以用户为中心,做用户真正需要的产品
皕杰报表的下拉框联动
轩辕实验室丨欧盟EVITA项目预研 第一章(四)
Pytorch Deep Learning Quick Start Tutorial -- Mound Tutorial Notes (3)
js 图形操作一(兼容pc、移动端实现 draggable属性 拖放效果)
随机推荐
Example of Noise Calculation for Amplifier OPA855
leetcode points to Offer 10- I. Fibonacci sequence
百年北欧奢华家电品牌ASKO智能三温区酒柜臻献七夕,共品珍馐爱意
2.4G无线收发模块的应用
NowCoderTOP35-40 - continuous update ing
哪位大佬有20年4月或者1月的11G GI和ojvm补丁呀,帮忙发下?
hcip BGP 增强实验
NowCoderTOP35-40——持续更新ing
PAT Level B - B1021 Single Digit Statistics (15)
There is only one switch, how to realize the nqa of master-slave automatic switching
eKuiper Newsletter 2022-07|v1.6.0:Flow 编排 + 更好用的 SQL,轻松表达业务逻辑
How to realize the short press and long press detection of the button?
干货!生成模型的评价与诊断
Marketing Suggestions | You have an August marketing calendar to check! Suggest a collection!
什么是CRM决策分析管理?
长达四年的减肥记录
Custom filters and interceptors implement ThreadLocal thread closure
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
First Decentralized Heist?Loss of nearly 200 million US dollars: analysis of the attack on the cross-chain bridge Nomad
Open Source Summer | How OpenHarmony Query Device Type (eTS)