MySQL - [20] 事务
题记部分
一、什么是ACID
(1)Atomicity 原子性
某个操作,要么全部执行完毕,要么全部回滚。
(2)Consistency 一致性
数据库中的数据全都符合现实世界中的约束,则这些数据就符合一致性。
比如性别的约束男or女,人民币勉之不能为负数,出生地址不能为null,参与转账的账户总余额不变;等等。
(3)Isolation 隔离性
多个事务访问相同数据时,对该数据不同状态的转换对应的数据库操作的执行顺序有一定的规律,彼此不干涉。
(4)Durability 持久性
现实中的状态转换映射到数据库中,意味着对数据所作的修改都应该在磁盘中保存。
二、事务的状态有哪些

三、事务并发时数据一致性问题有哪些

四、脏读
如果一个事务读取到了另一个未提交事务修改过的数据,就意味着发生了脏读现象。
五、不可重复读
如果一个事务修改了另一个未提交事务读取的数据,就意味着发生了不可重复读现象,或者叫模糊读FuzzyRead
六、幻读
如果一个事务先根据某些搜索条件查询了一些记录,但是在记录该事务并未提交时,另一个事务写入了一些符合上面搜索条件的记录(这里的写入可以是insert、delete、update操作。)就意味着发生了幻读现象。
七、事务隔离级别

READ UNCOMMITED:最低的隔离级别,允许读取尚未提交的数据变更。可能导致脏读、不可重复读和幻读。
READ COMMITED:允许读取已经提交的数据。可以避免脏读,但不可重复读和幻读仍有可能发生。
REPEATABLE READ:MySQL默认的隔离级别,确保在同一个事务中多次读取同一个数据时,该数据不会被修改。但在事务进行过程中,其他事务的插入操作可能导致幻读。
SERIALIZABLE:最高的隔离级别,所有的事务都串行化执行,避免了脏读、不可重复读和幻读的问题,但是性能将会大幅下降。
八、隔离级别及事务重要参数查询和设置
(1)查询事务隔离级别:show variables like 'transaction_isolation';
(2)设置事务隔离级别为读提交:set session transaction isolation level read committed;
(3)设置事务隔离级别为可重复读:set session transaction isolation level repeatable read;
(4)查看是否自动提交事务:show variables like 'autocommit';
(5)设置非自动提交事务:set autocommit=0;
— 业精于勤荒于嬉,行成于思毁于随 —
MySQL - [20] 事务的更多相关文章
- MySQL 基础 事务
什么是mysql的事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.简单的说,事务就是一连串的DML的sql语句组合在一起,所以语句执行成功才算成功,如果有语句执行失败,执行就不成功 .比如 ...
- mysql 函数 事务
mysql 中提供了许多内置函数 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符. 对于一个包含五个二字节字符集, LENGTH()返回 ...
- Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁
Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...
- MySQL的事务和锁
MySQL的事务和锁 阅读目录 什么是事务 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再 ...
- 一文读懂MySQL的事务隔离级别及MVCC机制
回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...
- MySQL 数据库事务与复制
好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ...
- Mysql分布式事务
关于Mysql分布式事务介绍,可参考:http://blog.csdn.net/luckyjiuyi/article/details/46955337 分为两个阶段:准备和执行阶段.有两个角色:事务的 ...
- mysql的事务和select...for update
一.mysql的事务mysql的事务有两种方式:1.SET AUTOCOMMIT=0;也就是关闭了自动提交,那么任何commit或rollback语句都可以触发事务提交;如果SET AUTOCOMMI ...
- MySQL的事务
MySQL的事务 1.事务:事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行. 2.事务具备的四个特性(简称为ACID性): (1)原子性(Atomic ...
- mysql 分布式事务
php + mysql 分布式事务 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元: 事务应该具有4个属性:原子性.一致性.隔离性.持续性 原子性(atomicit ...
随机推荐
- fiddler:The system proxy was changed.Click to reenable capturing
前情 最近在开发一个老旧项目,由于本地环境已难跑起,于是想通过代理线上代码进行功能开发. 坑位 启动fiddler后,fiddler菜单栏会警告,大概意思是代理被更改了,点击重启fillder代理,但 ...
- 加密Python项目代码之把Django或Flask项目打包成exe
目录 python代码仿泄露方案 -方案一:启动起来,把源代码删除 -方案二:pipinstaller 打包成可执行文件 -方案三:做到docker镜像中--->运行容器--->-e pa ...
- django介绍及基本使用
目录 一.python主流web框架 二.django简介 1.版本问题 2.运行django注意事项 三.django基本使用 1.下载模块 2.验证 3.常见命令 4.pycharm自动创建dja ...
- 我用cursor, 半就开发了一个手机壁纸小程序,真的太强了
前言 我用chatGPT帮我写后端爬虫,分析知乎html代码,爬取知乎壁纸.然后用cursor AI工具,完全使我一个不懂前端uniapp框架的人,开发了一个小程序手机壁纸页面. 原来一周的工作量,半 ...
- 2024年1月Java项目开发指南10:vite+Vue3项目创建
新建项目 安装router npm install vue-router 在src下新建目录router,在目录下新建index.js 在index.js里面配置路由 import { createR ...
- Spring Cloud Sleuth in a Monolith Application
1. Overview In this article, we're introducing Spring Cloud Sleuth – a powerful tool for enhancing ...
- Qt交叉编译整理的几点说明
关于交叉编译,对于初学者来说是个极难跨过去的砍(一旦跨过去了,以后遇到需要交叉编译的时候都是顺水推舟.信手拈来.),因为需要搭建交叉编译环境,好在现在厂家提供的板子基本上都是测试好的环境,尤其是提供的 ...
- Qt编写的项目作品10-本地摄像头综合应用示例
一.功能特点 同时支持 QCamera.ffmpeg.v4l2 三种内核解析本地摄像头. 提供函数 findCamera 自动搜索环境中的所有本地摄像头设备,搜索结果信号发出. 支持自动搜索和指定设备 ...
- [转]解决Spring Data Jpa 实体类自动创建数据库表失败问题
先说一下我遇到的这个问题,首先我是通过maven创建了一个spring boot的工程,引入了Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表. 找了半天发 ...
- 如何通过C#修改Windows操作系统时间
C#的System.DateTime类提供了对日期时间的封装,用它进行时间的转换和处理很方便,但是我没有在其中找到任何可以用来修改系统时间的成员.用过VC.VB等的朋友可能知道,我们可以调用Win32 ...