mysql基础之事务

简介
事务是数据库的逻辑工作单位,具有原子性、一致性、隔离性、持久性四大特性。
【原子性】:事务中的操作要么全部成功,要么操作失败全部回滚,不会出行部分完成的状态。
【一致性】:事务开始到结束时,数据库都必须保持数据的一致状态(数据的完整性约束和业务逻辑不会被破坏)
【隔离性】:并发执行事务时,事务不受其它事务的影响。
【持久性】:事务被提交成功之后,对数据库的修改是永久性的,即使系统故障,修改也不会丢失。
事务的隔离级别
【读未提交(read uncommitted)】:事务最低级的隔离级别,允许读取尚未提交的数据,可能会导致脏读、幻读、不可重复读
【读已提交(read committed)】:允许读取已提交的数据,不会出现脏读。但是幻读、不可重复读依然可能发生。
【可重复读(repeatable read)】:该级别下,同一字段的多次读取结果是一致的。除非数据被本身事务所修改,可以防止脏读和不可重复读,但是仍会出现幻读。
【串行化(serializable)】:事务的最高隔离级别,避免脏读、不可重复读、幻读。但是对性能有影响

脏读、可重复读、不可重复读、幻读
【脏读】:一个事务读取了另一个事务未提交的数据。如果另一个事务回滚,对应的数据就不存在或者未更新,此时读取的数据就是不正确的。
【可重复读】:事务多次读取同一数据,每次读取的结果始终一致。
【不可重复读】:事务多次读取同一数据,由于其它事务对该数据进行了修改,导致多次读取的结果不一致。(查询结果条数不变,但是内容不一致)
【幻读】:同一事务执行多次相同的查询,由于其它事务插入或者删除了满足当前事务查询条件的数据,导致后续的查询结果出现了之前结果中未出现的数据。(查询结果数量增加或者减少)

创建一个简单的事务
1.设置隔离级别:set transaction isolattion leavel 事务隔离级别;; 事务的默认隔离级别是repeatable(可重复读)
2.开启事务:start transaction ;
3.执行sql语句:insert\update\delete语句;
4.提交/取消事务:commit; or rollback;

保存点
保存点是一个时间节点标记,它的存在可以让数据回滚到该节点之前的状态。
– 开启事务START TRANSACTION;
– 执行一些操作INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2'); UPDATE table_name SET column3 = 'new_value' WHERE id = 1;
– 创建一个保存点SAVEPOINT SP1;
– 执行一些操作DELETE FROM table_name WHERE id = 2;
– 如果需要回滚到保存点SP1,可以使用以下语句ROLLBACK TO SAVEPOINT SP1;
– 提交事务COMMIT;

其它问题:
【幻读与不可重复读的区别】
幻读侧重于数据的新增、删除,不可重复读侧重于数据的修改。
【事务的应用场景】
主要应用于金融交易、订单处理、账户管理等需要确保数据完整性和一致性的场景
【何验证系统是否正确地管理了事务,特别是在并发环境下】
可以通过模拟正常事务处理、并发事务处理以及异常情况下的事务处理场景,使用数据库管理系统的并发控制管理器来对并发执行的事务进行基本读写操作的顺序控制,以确保在某个隔离级别下,并发执行事务的正确性。
【简要介绍一下MySQL中的多版本并发控制(MVCC)机制,以及它在事务处理中的作用】
MVCC的主要作用是在数据库中处理并发操作时,通过保存数据的历史版本来实现事务的隔离性,允许读写操作同时进行而不互相干扰。这样,读取数据时就不需要加锁,从而提高了数据库的并发性能和响应能力

                                                                                   学海无涯

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

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

相关文章

pgsql常用索引简写

文章来源:互联网博客文章,后续有时间再来细化整理。 在数据库查询中,合理的使用索引,可以极大提升数据库查询效率,充分利用系统资源。这个随着数据量的增加得到提升,越大越明显,也和业务线有关…

《鸟哥的Linux私房菜》第6章——总结与习题参考答案

目录 一、 简介 二、一些新了解的指令 1.touch- 修改文件时间或创建新文件 2.umask-新建文件/目录的默认权限 3.文件隐藏属性 4.文件特殊权限 5.file-观察文件类型 三、简答题部分 一、 简介 本章介绍了一些常用的文件与目录指令,包括新建/删除/复制/移动/查…

2024HVV行动-进军蓝中研判(log4j2、fastjson、Struts2、Shiro)

1、log4j2 特征: 恶意请求中包含 JNDI 协议地址,如"ldap://"、"rmi://"等,被 log4j2 解析为 JNDI 查找。 原理: 在日志输出中,未对字符进行严格的过滤,执行了 JNDI 协议加载的远程恶…

教师如何搭建学生查询考试分数的平台?

随着信息技术的快速发展,搭建一个学生查询考试分数的平台已经成为现代教育管理的重要组成部分。这样的平台不仅可以提高成绩管理的效率,还能为学生提供便捷、及时的成绩查询服务。那么,作为教师,我们应该如何搭建这样一个平台呢&a…

Python中的惩罚分析:理论与实践指南

目录 写在开头1. 理论基础1.1 优化问题与约束条件简介1.2 什么是惩罚分析1.3 惩罚分析的应用场景1.4 惩罚方法的类型2. 惩罚分析在Python中的实现2.1 实现代码示例2.2 未加惩罚的模型2.3 加惩罚的模型(L1和L2正则化)2.4 选择合适的惩罚方法与调整强度2.5 惩罚过程改善过拟合问…

【海贼王的数据航海】栈和队列

目录 1 -> 栈 1.1 -> 栈的概念及结构 1.2 -> 栈的实现 1.2.1 -> Stack.h 1.2.2 -> Stack.c 1.2.3 -> Test.c 2 -> 队列 2.1 -> 队列的概念及结构 2.2 -> 队列的实现 2.2.1 -> Queue.h 2.2.2 -> Queue.c 1 -> 栈 1.1 -> 栈的…

如何缩小你和大厂UI设计师之间的差距?重点关注你的作品集!

据说金三银四,在新一轮招聘旺季到来之前,你做过UI作品集吗?一个好的作品集可以为你的面试增加很多分数!在开始之前,分享五个适合交互设计作品集的软件: 一、即时设计 这是一款专门为UI设计而设计的在线矢…

多线程(volatile)

volatile的功能 保证内存可见性禁止指令重排序 内存可见性 简单的理解 两(多)个线程同时针对一个变量进行操作, 一个线程读, 一个线程修改, 此时读到的值不一定是修改过后的值 即读线程没有感知到变量的变化 (其实是 编译器/JVM 对于代码在多线程情况下的优化进行了误判) 从 J…

maven父工程

maven父工程 一般最上面是定义的属性然后是版本管理然后是模块聚合 父工程一般只需要留一个pom.xml文件就行了。 父工程主要是用于版本管理和模块聚合。 一般最上面是定义的属性 属性中写的是各个依赖的版本&#xff0c;方便下面引用。 <properties><java.version&…

【Python】-闲聊:如何系统的自学Ptyhon

如何系统地自学Python 学习Python需要有一个系统的计划和策略&#xff0c;这样才能有效地掌握这门语言。下面是一个自学Python的指南&#xff0c;包括方法、实际例子和建议&#xff0c;适合新人小白&#xff0c;老手请绕过。 一、确定学习目标 在开始学习之前&#xff0c;首…

OD_2024_C卷_200分_3、电脑病毒感染【JAVA】【图论 / 单源最短路径(dijkstra)】

题目描述 一个局域网内有很多台电脑&#xff0c;分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样&#xff0c;所以感染时间不一样&#xff0c;感染时间用 t 表示。 其中网络内一台电脑被病毒感染&#xff0c;求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不…

Linux:设置别名命令alias

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 在Linux中alias命令用于为一串字符&#xff08;常代表命令&#xff09;设置一个别名&#xff0c;该别名在Bash读取并解析一行命令时会被展开。 下面是该命令的语法。 用…

github(不是git啊)操作记录(踩坑)

专栏介绍与文章目录-CSDN博客 github是程序员绕不开的东西。 网站打不开&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 明明账号密码都对却登录失败&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 重置密码失败&#xff1f; 向雇主或有关部门申请合法信道…

【DRAM存储器二十三】DDR4介绍-DDR4相对DDR3的变化、框图

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光DDR4数据手册》 、《JESD79-4B》 终于到DDR4了,DDR4在当下应用还比较广泛,所以这部分准备多花点时间整理。 DDR4相对DDR3的变化 老规矩,先从DDR4的…

BOM

文章目录 1. BOM概述1.1 什么是BOM1.2 BOM构成 2. window 的常见对象2.1 窗口加载事件2.2 调整窗口大小事件 3. 定时器3.1 setTimeout()3.2 停止 setTimeout() 定时器3.3 setInterval()*案例--倒计时效果 3.4 清除setInterval() 定时器*案例--发送短信 3.5 this 指向问题 4. JS…

二叉搜索树题目:恢复二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;恢复二叉搜索树 出处&#xff1a;99. 恢复二叉搜索树 难度 5 级 题目描述 …

JAVA八股文面经问题整理第1弹

文章目录 目录 文章目录 提问问题 问题1 问题2 问题3 问题4 问题5 问题6 问题7 问题8 问题9 问题10 问题11 问题12 问题13 问题14 问题15 问题16 问题17 问题18 问题19 写在最后 提问问题 项⽬的⽤户数据怎么存储的&#xff0c;存储在哪⾥&#xff0c;⽤的什…

西门子PLC常用底层逻辑块分享_单/双输出电机

文章目录 前言一、功能概述二、单输出电机程序编写1.创建自定义数据类型2.创建FB功能块“单输出电机”3.编写程序 三、双输出电机程序编写1.创建自定义数据类型2.创建FB功能块“双输出电机”3.编写程序 前言 本文分享一个自己编写的电机控制逻辑块。 一、功能概述 手动状态、…

C语言(循环)单元练习

一、单项选择题 1、以下程序段中与语句ka>b?(b>c?1:0):0&#xff1b;功能等价的是__A____。 A. if((a>b)&&(b>c)) k1; B. if((a>b)||(b>c)) k1 else k0; else k0; C. if(a<b) k0; D. if(a>b)…

2024年1月粮油调味行业分析(TOP品牌/店铺/商品销售数据分析)

鲸参谋监测的某东1月份粮油调味市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台显示&#xff0c;今年1月份&#xff0c;某东平台上粮油调味品的销量约6200万件&#xff0c;环比上个月增长45%&#xff0c;同比去年下滑15%&#xff1b;销售额约25亿元&#xff0c;环…