当前位置:网站首页>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 读未提交 存在脏读、幻读、不可重复读的问题,
读提交存在 幻读、 不可重复读的问题。
边栏推荐
- Can MySQL use aggregate functions without GROUP BY?
- 上海控安技术成果入选市经信委《2021年上海市网络安全产业创新攻关成果目录》
- Example of Noise Calculation for Amplifier OPA855
- PHP 操作mangoDb
- PAT乙级-B1021 个位数统计(15)
- dotnet OpenXML parsing PPT charts Getting started with area charts
- Dry goods!Generative Model Evaluation and Diagnosis
- 蚁剑webshell动态加密连接分析与实践
- leetcode refers to Offer 10- II. Frog jumping steps
- The Seven Weapons of Programmers
猜你喜欢
随机推荐
浅析WSGI协议
欧盟 | 地平线 2020 ENSEMBLE:D2.13 SOTIF Safety Concept(下)
Redis源码解析:Redis Cluster
ffmpeg drawtext 添加文本水印
2022.8.3
Science bosses say | Hong Kong rhubarb KaiBin teacher take you unlock the relationship between the matrix and 6 g
Bias lock/light lock/heavy lock lock is healthier. How is locking and unlocking accomplished?
5. Deploy the web project to the cloud server
皕杰报表的下拉框联动
无题十一
5.部署web项目到云服务器
CCVR eases heterogeneous federated learning based on classifier calibration
js 图形操作一(兼容pc、移动端实现 draggable属性 拖放效果)
Brief Analysis of WSGI Protocol
IDEA performs the Test operation, resulting in duplicate data when data is inserted
EU | Horizon 2020 ENSEMBLE: D2.13 SOTIF Safety Concept (Part 2)
Weekly Report 2022-8-4
seata源码解析:TM RM 客户端的初始化过程
JS逆向入门学习之回收商网,手机号码简易加密解析
MySQL使用聚合函数可以不搭配GROUP BY分组吗?








