iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL事务学习
  • 429
分享到

MySQL事务学习

MySQL事务学习 2019-11-20 10:11:55 429人浏览 绘本
摘要

MySQL事务: 1、事务特性:原子性,一致性,隔离性,持久性 原子性:对一些操作,要么同时成功,要么同时失败。 一致性:对一些操作,处理结果必须一致的,比如转账:A转给B,那么A账户减少100元,则B账户必须增加100元。 隔离性:多个

MySQL事务学习

MySQL事务:

1、事务特性:原子性,一致性,隔离性,持久性

  • 原子性:对一些操作,要么同时成功,要么同时失败。
  • 一致性:对一些操作,处理结果必须一致的,比如转账:A转给B,那么A账户减少100元,则B账户必须增加100元。
  • 隔离性:多个事务操作数据的表或者行,如果没有隔离机制,那么不同的事务操作相同的数据时,就会产生相互干扰,影响数据结果。
  • 持久性:对数据的修改或者操作,是永久的操作,比如数据库服务器发生故障等,数据也能永久保存下来。

2、事务并发的几大问题:

  • 脏读:一个事务读取到了其他事务未提交的修改。
  • 不可重复读:一个事务读取到了其他事务已提交的操作(修改或删除);
  • 幻读:一个事务读取到了其他事务已提交的插入操作。
  • 丢失更新:应用层面的问题,不是由数据库提供机制所能解决的(这里暂不讨论),比如两个用户先后对某数据进行修改,那么第一次修改的数据会被第二次修改的数据所覆盖。

事务并发的几大问题其实都是读一致性问题。必须由数据库提供一定的事务隔离机制来解决。

3、隔离性几种级别:

  • 未提交读(Read Uncommitted):事务未提交的数据对其他事务是可见的,会出现脏读。–未解决任何并发问题。
  • 已提交读(Read Committed):一个事务开始之后,只能看到已提交的事务所做的修改,会出现不可重复读。解决脏读问题。
  • 可重复读(Repeatable Read):在同一个事务中多次读取同样的数据结果是一样的,这种隔离级别定义为解决幻读的问题。
  • 串行化(Serializable):最高的隔离级别,通过强制事务的串行执行。解决所有并发问题。

以上四种隔离级别并发性能,由低到高。

4、事务隔离级别的实现,解决方案:

第一种:在读取数据前,对其加,阻止其他事务对数据进行修改(LBCC,Lock Based Concurrency Control)。

第二种:生成一个数据请求时间点的一致性数据快照(Snapshot),并用这个快照来提供一定级别(语句及或事务级)的一致性读取(mvcC,Multi Version Concurrency Control)。

对于第一种方案进行阐述:

1 锁的基本类型

1.1 锁粒度

锁:用于管理不同事务对共享资源的并发访问。

表锁与行数的区别:

锁定粒度:表锁 > 行锁

加锁效率:表锁 > 行锁

冲突概率:表锁 > 行锁

并发性能:表锁 < 行锁

1.2 Mysql InnoDB锁类型:

1)共享锁(行锁):Shared Locks

又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改;

加锁释锁方式:

select * from student where id =1 LOCK IN SHARE MODE;
commit/rollback;

2)排它锁(行锁):Exclusive Locks

又称为写锁,简称X锁,排它锁不能与其他所并存,如一个事务获取了一个数据行的排它锁,其他事务就不能再获取该行的锁(共享锁、排它锁),只有该获取了排它锁的事务是可以对数据进行读取和修改。

加锁释锁方式:

自动:
delete /update /insert 默认加锁X锁;

手动:
select * from student where id = 1 FOR UPDATE;
commit/rollback;

3)意向共享锁(表锁):Intention Shared Locks,简称IS锁

表示事务准备给数据行加入共享锁,也就是说一个数据行加共享锁前必须先取得该表的IS锁。

4)意向排它锁(表锁):Intention Exclusive Locks,简称IX锁。

表示事务准备给数据行加入排他锁,说明事务在一个数据加排他锁前必须先取得该表的IX锁。

意向锁是由数据引擎自己维护的,用户无法手动操作意向锁。

2 行锁算法

1)记录锁:Record Locks 唯一索引=精确匹配,退化成Record锁

2)间隙锁:Gap Locks 记录不存在时,会退化成Gap锁

3)临键锁:Next-key Locks 其他情况都是临键锁。通过间隙锁+临键锁可以避免幻读。

锁的原理:

例子:

1)无索引 t1,当锁一行数据时会锁整张表

2)有主键 t2,当锁一行数据id=1时,其他事务若锁id=2的行是可以成功的。锁定的是行数据。

3)唯一索引 t3,当name=4这行数据被锁时,其他事务如果想通过id=3锁行数据时是不能成功的。先辅助索引,然后主键索引。

原理:InnoDB默认创建了隐藏索引,mysql的InnoDB锁住的是索引。。。。后续。。。。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL事务学习

本文链接: https://www.lsjlt.com/news/7428.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL学习之事务详解
    目录一. 事务的业务场景二. 事务的使用三. 事务的特性(ACID)1. 原子性(Atomicity)2. 一致性(Consistency)3. 持久性(Durability)4. 隔离性(Isolation)四. 事务...
    99+
    2022-12-08
    MySQL事务使用 MySQL事务
  • 【MySQL】MySQL事务保姆级教程(适合MySQL初学者学习)
    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温M...
    99+
    2023-08-17
    mysql 学习 数据库
  • 【MySQL系列】MySQL的事务管理的学习(一)_ 事务概念 | 事务操作方式 | 事务隔离级别
    「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、事务概念二、事务的版本支持三、事务提交方式四、事务常...
    99+
    2023-09-09
    mysql 学习 adb
  • MySql学习笔记之事务隔离级别详解
    背景 说的事务,大家应该都不陌生,开发用到 MySql 数据库的时候,通常会用到事务。其中比较经典的例子就是转账,比如你要给小明转 50 块钱,而此时你的银行卡也就只有 50 块钱...
    99+
    2024-04-02
  • MySQL事务的基础学习以及心得分享
    这篇文章主要介绍了MySQL事务的基础学习以及心得分享,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。事务是逻辑上的一组操作,组成这组操作的各...
    99+
    2024-04-02
  • MySQL应该学习的6件事是什么
    本篇内容介绍了“MySQL应该学习的6件事是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 每一行...
    99+
    2024-04-02
  • MYSQL-mysqldump学习
    mysqldump导出的文件其实是个sql脚本 举例: mysqldump --single-transaction --all-databases > /mysql/mysqldump_201806...
    99+
    2024-04-02
  • python学习之记事本
              买了本学习python的书,看了几天,想写个简单的程序,下面就是一个简单的类似记事本一样的小程序,器功能主要有: 1提示你是想流泪这个文件还是想写东西到这个文件 2.输入R或者r,表示想看这个程序写的文件 3,输入W或者...
    99+
    2023-01-31
    记事本 python
  • spring学习JdbcTemplate数据库事务管理
    目录spring JdbcTemplate数据库事务管理一、spring 中的事务管理二、spring 事务管理 API三、使用事务管理1. 配置文件2. 类上添加事务注解sprin...
    99+
    2024-04-02
  • 【MySQL系列】MySQL的事务管理的学习(二)_ 再次理解隔离性
    「前言」文章内容大致是MySQL事务管理,续上一篇。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 七、再次理解隔离性7.1 数据库并发的场景有7...
    99+
    2023-09-30
    mysql 学习 android
  • Java事务管理学习之JDBC详解
    什么是Java事务通常的观念认为,事务仅与数据库相关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩...
    99+
    2023-05-31
    java jdbc 事务管理
  • Spring学习JdbcTemplate数据库事务参数
    目录Spring JdbcTemplate数据库事务参数一、propagation1. REQUIRED2. REQUIRES_NEW3. SUPPORTS4. NOT_SUPPOR...
    99+
    2024-04-02
  • MySQL 学习笔记
    😀😀😀创作不易,各位看官点赞收藏. 文章目录 MySQL 学习笔记1、`DQL` 查询语句1.1、基本查询1.2、函数查询1.2.1、单行函数1...
    99+
    2023-10-01
    mysql 学习 笔记
  • MySQL数据库学习
    目录 从管理员cmd页面打开数据库 创建一个用户 数据库的基本操作 数据完整性 完整性约束管理 表的基本操作 判断关键字 聚合函数 多表连接查询 嵌套查询 联合查询 事务 锁 索引 视图 存储过程 函数(与存储过程类似) 光标 触发器   ...
    99+
    2023-10-19
    数据库 mysql 学习 java
  • 详解Spring学习之编程式事务管理
    前言在前面的内容,基本已经学习了事务的基本概念以及事务隔离级别等,接下来的几个小节,将学习怎么使用Spring进行事务管理,在Spring中,对事务进行管理有多种方法,主要分别编程式和声明式,本小节主要学习编程式事务管理,后面讲学习Spri...
    99+
    2023-05-31
    spring 编程式 事务
  • 想学习ASP API?这些学习笔记会让你事半功倍!
    ASP API是一种常用的Web开发技术,它可以帮助你快速构建动态网站,并且具有高度的可扩展性。如果你正在学习ASP API,那么你一定需要一些好的学习笔记来帮助你更好地理解这个技术。在本文中,我们将分享一些有用的学习笔记,这些笔记将帮助...
    99+
    2023-11-06
    api 教程 学习笔记
  • 学习MYSQL之ICP、MRR、BKA
    Index Condition Pushdown(ICP) Index Condition Pushdown (ICP)是mysql使用索引从表中检索行数据的一种优化方式。 ICP原理 ...
    99+
    2024-04-02
  • swoole学习之异步Mysql
    这篇文章将为大家详细讲解有关swoole学习之异步Mysql,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。官方示例:$db = new swoole_mysql();$ser...
    99+
    2023-06-14
  • MySQL学习教程(超全)
    学习MySQL需要通过阅读文档、观看视频教程、参加在线课程等方式。同时,还需要进行实践操作,如创建数据库、表和数据插入、查询等操作,以加深对MySQL的理解和掌握。在实践中,也可以遇到一些问题,需要通过查询文档和搜索解决方案的方式来解决。 ...
    99+
    2023-08-31
    mysql 数据库 学习
  • Vue3学习之事件处理详解
    目录1.基本使用2.事件修饰符3.按键修饰符1.基本使用 我们可以使用 v-on 指令来监听 DOM 事件,从而执行 JavaScript 代码。 v-on 指令可以缩写为 @ 符号...
    99+
    2022-12-08
    Vue3事件处理 Vue3事件 Vue 事件处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作