【学习笔记12.24】关于事务你必须知道的几件事

news2024/11/19 7:33:59

文章目录

  • 事务基础知识
    • 什么是事务?
    • 开启事务
    • 事务隔离级别

事务基础知识

在MySQL中,只有InnoDB存储引擎是支持事务的。

什么是事务?

事务是逻辑操作的最小单元,使数据从一个状态转变为另一个状态。

也可以通过事务四大特性ACID来更深刻地了解事务

A :原子性【事务不可再分,是最小单元。要么全部提交,要么全部回滚】

C:一致性【执行事务前后,数据从一个合法状态变换为另一个合法状态,就满足了一致性的需求】

I:隔离性【两个事务不互相干扰】

D:持久性【事务一旦提交,对数据库中的数据改变就是永久性的】

开启事务

显式事务: START TRANSACTION 或者 BEGIN

隐式事务:MySQL中的系统变量autocommit,默认为TRUE,如果设置为FALSE,则开启了隐式事务。

隐式提交事务的情况:使用数据定义语言DDL(比如TRUNCATE TABLE ——删除表中数据)、隐式使用或修改mysql数据库中的表、事务控制或关于锁定的语句(比如使用 LOCK TABLES 、 UNLOCK TABLES 等关于锁定的语句也会 隐式的提交 前边语句所属的事务)

事务隔离级别

并发中可能发生如下问题:

  1. 脏写:SessionA修改了SessionB修改后未提交的数据。

  2. 脏读:SessionA读取了SessionB修改后为提交的数据,SessionB此时回滚,SessionA读取到的内容就是无效的。

  3. 不可重复读:SessionA读取了一个字段,SessionB对字段进行修改后,SessionA再次读取该字段,与之前的值不一致,就发生了不可重复读。

  4. 幻读:SessionA从表中读取一个字段,SessionB对表进行操作,在表中插入了一条新的数据。SessionA再次查询该表时,就会出现一些之前没有的新纪录,这种情况就是幻读。新插入的记录被称为幻影记录。

有些时候,我们愿意舍弃隔离性来换取一些高并发的性能,SQL标准中设立了4个隔离级别

  • READ UNCOMMITTED :读未提交。所有事务都可以读取其他事务未提交的数据。隔离级别最低,但并发性能最高。
  • READ COMMITTED:读已提交。满足隔离的简单定义,一个事务只能读取其他事务已经提交的数据。可以避免脏读。
  • REPETABLE READ :可重复读。SessionA读取了一个字段,SessionB对字段进行修改后,SessionA再次读取该字段时读取到与之前一致的值。避免了脏读、不可重复读。是MySQL的默认隔离级别
  • SERIALIZABLE:可串行化。确保事务可以从一个表中读取相同的行。具体原理为,在事务持续期间,禁止其他事务对表进行任何操作。隔离级别最高,但性能很低。避免了脏读、不可重复读、幻读。在这里插入图片描述
    图:隔离级别与并发性能的关系。

设置隔离级别:

SET [GLOBAL|SESSION] TRANSACTION_ISOLATION = '隔离级别'
#其中,隔离级别格式:
> READ-UNCOMMITTED
> READ-COMMITTED
> REPEATABLE-READ
> SERIALIZABLE
# GOLBAL : 在全局范围内影响。 SESSION : 只在当前会话有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP ERP 里的 Costing Sheet 成本核算表

有朋友在我的知识星球里向我提问: 请您帮忙讲一下这个AP0100的costing sheet rows这里都表示什么意思吗?比如row10、base Z010、overhead啥、描述、from、to row、credit都说明了什么,能够实现上面👆🏻的目标吗&#x…

fpga实操训练(vga测试)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 我自己读书那会,买的电脑还是以台式机居多,平板显示器也是才刚刚流行、且价格较高,视频接口也是以VGA为主。不像…

Linux搭建TFTP服务

TFTP是简单文件传输协议,是一个基于UDP协议实现的用在客户及和服务器之间进行简单文件传输的协议,适用于开销不大,不复杂的应用场景。TFTP协议专门为小文件传输而设计,只能从服务器获取文件,或者客户端往服务器写入文件,但是不能进行认证也不能列出目录。 1、安装tftp服…

RV1126笔记十五:吸烟行为检测及部署<三>

若该文为原创文章,转载请注明原文出处。 训练并测试(windows) 一、yolov5安装 1、下载rk优化后的yolov5 git clone https://github.com/airockchip/yolov5.git 下载后,我是放到E:\miniconda3\envs目录下,miniconda3是安装miniconda的目录。可以放到其他地方,后续操作需要…

MySQL提高批量insert的性能

一. 使用批量插入,将多条单独的 insert 合并成一次操作 即:insert into table values (a1, b1, c1), (a2, b2, c2); 解析:将多条 insert 合并后,减少MySQL日志量(即MySQL的 binlog 和 innodb 的事务日志),降低日志刷…

Python pandas有好几百个库函数,你都用过吗(1)

对Python的 pandas 库所有的内置元类、函数、子模块等全部浏览一遍,然后挑选一些重点学习一下。我安装的库版本号为1.3.5,如下: >>> import pandas as pd >>> pd.__version__ 1.3.5 >>> print(pd.__doc__)pandas…

54三数之和55 56有无重复元素的全排列

54 三数之和 首先想到的就是之前的两数之和,只要在外层遍历一遍,对每个元素用之前的两数之和的哈希做法,就刚好是O(n^2) 但是有坑的地方在于需要去重,并且输出的三元组也是需要顺序的!!然后我用set去重和重…

c语言复习之预编译(十四)

1.以#开头的行,都称为编译器指令 #define定义宏#if #else #elif #endif条件编译#ifdef #ifndef判断是否定义了某个宏#error错误#program设定状态或指定完成(编译器)#undef取消宏定义 2.预定义宏 __LINE__行号__FILE__源文件名__DATE__创建…

你以为架构师天天就画图写PPT吗,告诉你其他事儿多了去了~

V-xin:ruyuan0330 获得600页原创精品文章汇总PDF 目录 一、多系统订阅数据回顾二、核心数据的监控系统三、电商库存数据如何监控四、数据计算链路追踪五、百亿流量下的数据链路追踪六、自动化数据链路分析七、下篇预告 上篇文章《为什么我建议线上高并发量的代码&a…

rip综合实验

目录 1.拓扑图 2.要求 3.要求分析 4.主要配置 5.测试 6.实验总结 1.拓扑图 2.要求 R1代表运营商,R1远程登录R2实际登录R9R3访问R7的环回,实际走下面全网可达 3.要求分析 将R2包括右边所有设备理解为一个局域网,在R2的出接口上配置NAT…

BIT.3_Linux进程概念

目录冯诺依曼体系结构操作系统(Operator System)概念设计OS的目的定位如何理解 "管理"总结系统调用和库函数概念进程概念知识点基本概念描述进程-PCBtask_struct-PCB的一种task_ struct内容分类组织进程查看进程通过系统调用获取进程标示符通过系统调用创建进程-fork…

上次面试跪在了Redis上,刷完腾讯云大神亲码的“redis深度笔记”,终面进腾讯!

前言 作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。 毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要使…

使用PicGo+阿里云OSS实现md文档图片上传

使用PicGo阿里云OSS实现md文档图片上传 这次给大家带来的是PicG0阿里云Osstypora的图床环境搭建,帮助大家提高工作效率写博客速度! 1.typora安装 给大家一个链接:typora,打开后点击下载就行,正式版收费,…

Qt扫盲-QTextBrowser理论总结

QTextBrowser理论总结1. 简述2. 文档来源和内容3. 导航4. 用途1. 简述 QTextBrowser 顾名思义其实就是一个文本阅读器,但是这个类类扩展了 QTextEdit 的只读模式功能,当然了 QTextEdit 其实也就是QTextBrowser 的父类。添加的功能主要是一些导航 naviga…

对路由的基本理解和使用

一、认识路由 1、生活中的路由器 构造:路由器上有多个网线接口,每一个接口都对应一台设备 功能:多台设备能同时上网 2、编程中的路由和路由器 (1)后端渲染和后端路由 ①概念 早期的网站开发整个HTML页面是由服务器…

【附源码】如何C语言打印出心形表白?

使用C语言实现打印出心形,初学者的表白神器~ 我们分了4部分,前3行一部分,4-6行一部分,7-13行一部分,最后一行一部分,读者请仔细阅读注释,已经写的很详细了。 前三行输出,为了让初学…

6.1 文本情感倾向性分析

文章目录一、自然语言情感分析1.1 使用深度神经网络完成情感分析任务1.2 处理变长数据1.3 学习句子的语义二、循环神经网络RNN和长短时记忆网络LSTM2.1 RNN和LSTM网络的设计思考2.2 RNN网络结构2.3 LSTM网络结构2.4 使用LSTM完成情感分析任务三、使用飞桨实现基于LSTM的情感分析…

Python pandas有好几百个库函数,你都用过吗(4)

上一篇链接: https://blog.csdn.net/boysoft2002/article/details/128428569 S~W: Function46~56 Types[Function][45:] [set_eng_float_format, show_versions, test, timedelta_range, to_datetime, to_numeric, to_pickle, to_timedelta, unique,…

技术分享 Oracle下启用块跟踪

创建存放块跟踪文件目录 [oraclehost01 ~]$ cd /u01/app [oraclehost01 app]$ mkdir BCT 启用块跟踪 SQL> alter database enable block change tracking using file /u01/app/BCT/rman.bct; 检查块跟踪状态 SQL> col filename for a22 SQL> select filename, status,…

linux中级——libcurl库访问百度

libcurl简介: 在linux底下用c语言做http编程方法,依赖libcurl。 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基…