【MySQL学习笔记】事务和MySQL中事务隔离级别修改_mysql5.7 修改事务_DivingKitten的博客-程序员宅基地

技术标签: MySQL  mysql  数据库  sql  

一、事务的概念

事务:一组操作逻辑,使数据从一个状态转变到另一个状态。
事务特性

  • 原子性(atomicity):
    一个不可分割的工作单元,要么全部提交,要么全部回滚。
  • 一致性(consistency):
    事务执行前后,数据从一个合法状态转变到另一个合法状态
  • 隔离性(isolation):
    事务之间相互不干扰。
  • 持久性(durablility)
    事务被提交,则对数据修改时永久性的。

事务状态:

  • 活动(active):事务正在执行中
  • 部分提交(partially committed):数据已提交到内存,未修改到磁盘
  • 失败(failed):活动和部分提交的中的事务,出现异常,导致无法继续执行。
  • 中止(aborted):失败的事务回滚执行完成后。
  • 提交(committed)

二、基本操作

1、显示事务

开启事务:start transaction或者begin
保存点:savepoint [name];
回滚:rollback
提交:commit

2、隐式事务

MySQL变量autocommit默认设置为ON,设置为false即可关闭自动DML事务提交。

##查询变量
show variables like "autocommit";
## 关闭自动提交
set autocommit=false;
## 开启自动提交
set autocommit=ture;
  • DDL自动提交。
  • 针对用户的操作会自动提交。
  • 两个事务间无commitrollback则前一个事务会自动提交。
  • start slavestop slavereset slavechange master to这些关于MySQL主从复制的语句会隐式提交。
  • analiyze tablecache indexcheck tableflushload index into cacheoptimize tablerepair tablereset等也会隐式提交。

三、事务隔离级别

1、问题背景

在事务并发时,常出现一些问题:

  • **脏写:**事务A、B同时开启,在未终止或未提交前,事务A修改了事务B中修改的数据。
  • **脏读:**事务A、B同时开启,事务A读取了事务B更新而未提交的数据,事务B最终回滚了数据,则A读取的数据是脏数据。
  • **不可重复读:**事务A、B同时开启,在事务A两次读取同一字段之间,事务B修改了该字段,导致事务A两次读取字段结果不同。
  • **幻读:**事务A、B同时开启,在事务A两次读取同一字段之间,事务B插入一些行,导致事务A两次读取字段结果增加。

一般认为问题严重程度排序如下:
脏写 > 脏读 > 不可重复读 > 幻读

2、SQL事务隔离级别

  • READ UNCOMMITTED 读未提交。
  • READ COMMITTED 读已提交。
  • REPEATABLE READ 可重复读。
  • SERIALIZABLE 可串行。
隔离级别 脏读 不可重复读 幻读 加锁读
READ UNCOMMITTED Yes Yes Yes No
READ COMMIITTED No Yes Yes No
REPEATABLE READ No No Yes No
SERIALIZABLE No No No Yes

3、查看和修改MySQL中的事务隔离级别

MySQL默认事务隔离为REPEATABLE-READ.

## 查看事务隔离级别
show @@transection;

## 设置事务隔离级别
set [global|session] transection_istoloation='READ-UNCOMMITTED | READ-COMMIITTED | REPEATABLE-READ | SERIALIZABLE';

## 在my.cnf写入,写在[mysqld]下
transaction-isolation = READ-COMMITTED
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42404727/article/details/123751456

智能推荐

android 编辑框输入类型为带小数点数字-程序员宅基地

XML中:android:inputType="numberDecimal"java中:setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_CLASS_NUMBER)

20、开运算与闭运算_MuMengSunny的博客-程序员宅基地

一、开运算含义先进行腐蚀再进行膨胀就叫做开运算。开运算 (image)= 膨胀 (腐蚀 (image))图像被腐蚀后,去除了噪声,但会压缩图像;对腐蚀过的图像进行膨胀处理,可以去除噪声并保持原有形状。二、morphologyEx() 实现开运算2.1、函数调用格式dst = cv2.morphologyEx(src,cv2.MORPH_OPEN,kernel)src:需要处理的图像cv2.MORPH_OPEN:指定为开运算kernel:卷积核,为元组,一般使用 numpy 进行赋值2.2_开运算

MATLAB基于卡尔曼滤波的锂蓄电池SOC设计 用自适应卡尔曼滤波方法-程序员宅基地

用自适应卡尔曼滤波方法,基于锂离子动力电池等效电路模型,在未知干扰噪声环境下,在线估计电动汽车锂离子动力电池荷电状态。采用基本卡尔曼滤波和扩展卡尔曼滤波方法估计电池SOC时,?一般假定噪声为零均值白噪声,且噪声方差已知。在噪声确定的情况下,基本卡尔曼滤波和扩展卡尔曼滤波方法的估计效果很好,但实际上白噪声不存在。MATLAB基于卡尔曼滤波的锂蓄电池SOC设计。

httpClient 使用http协议上传文件-程序员宅基地

org.apache.commons commons-lang3 3.6 org.apache.httpcomponents httpclient 4.5 org.apache.httpcomponents httpmime 4.5 package c...

Unity发布安卓包提审Google Play平台经验总结_unity armv7还要勾选吗-程序员宅基地

政策说明1,安卓包需要签名2,自2019年8月1日起,所有新提审的包,需要既支持32位又要支持64位CPU注意事项注意一:Scripting Backend一定要选择IL2CPP,默认Mono是不支持64位的。Target Architectures勾选ARMv7和ARM64(默认是勾选了ARMv7的,Backend切换到IL2CPP才能够勾选得起ARM64)。建议x86就不要勾..._unity armv7还要勾选吗

前端工具大全_qdfuns 编辑器-程序员宅基地

前端工具大全核心 CoreHTML(HTML5)CSS(CSS3)JavaScriptjQueryES6插件包管理工具 Package ManagersNPMBowerYarn前端性能 Front-End Performan_qdfuns 编辑器

随便推点

Vim/Vi 基本命令_vi操作命令-程序员宅基地

文本编辑器Vim/Vi Vim/Vi是一个功能强大的全屏文本编辑器,是linux/unix上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件 Vim/Vi没有菜单,只有命令!!! Vim/Vi工作模式 插入命令 a:在光标后附加文本 A:在本行行末附加文本 i:在光标前插入文本 I:在文本开始插入文本 o:在光标下插入新行 O:在光标上插入新行 插入命令 h、left:左移一..._vi操作命令

mybatis mybatis-plus 配置映射等级 ResultMap不用写所有字段_mybatis plus 不用写resultmap-程序员宅基地

Springboot yml配置文件中mybatis-plus配置,mybatis 类似,大家自己找下,mybatis-plus: configuration: auto-mapping-behavior: fullhttps://mybatis.org/mybatis-3/zh/sqlmap-xml.html#Auto-mapping_mybatis plus 不用写resultmap

python中math模块_python math模块_魏大橙的博客-程序员宅基地

math库是python的内置数学类函数库,支持整数和浮点数运算math模块下的函数,返回值均为浮点数,除非有说明。_python math模块

WebView方法详解-程序员宅基地

/*** 是否支持缩放,配合方法setBuiltInZoomControls使用,默认true*/setSupportZoom(boolean support)/*** 是否需要用户手势来播放Media,默认true*/setMediaPlaybackRequiresUserGesture(boolean require)/*** 是否使用WebView内置的...

pyspark 读写orc格式文件_pyspark写出orc文件-程序员宅基地

数据原始格式# -*- coding: utf-8 -*-import sysimport osfrom pyspark import SparkContext,SparkConffrom pyspark.sql import SparkSession, HiveContextfrom pyspark.sql.types import *from pyspark.sql import Rowreload(sys)sys.setdefaultencoding("ut.._pyspark写出orc文件

PS扣图-程序员宅基地

PS 扣图注意点磁性套索工具在勾划时需要【Delete】键的配合,勾划时某一点线条走向不理想时,按一下【Delete】键,错误的走向就会退回,我们就可以重新再点,使某一点线条走向正确PS扣图(基础)先用磁性套索选中目标然后右击选择羽化,然后选择通过拷贝的图层选择背景点击编辑里面的填充...

推荐文章

热门文章

相关标签