广告
返回顶部
首页 > 资讯 > 数据库 >深入了解MySQL数据库事务知识
  • 796
分享到

深入了解MySQL数据库事务知识

2024-04-02 19:04:59 796人浏览 安东尼
摘要

下文主要给大家带来Mysql数据库事务知识,希望这些内容能够带给大家实际用处,这也是我编辑mysql数据库事务知识这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。一、前言只有InnoDB引擎支持事务

下文主要给大家带来Mysql数据库事务知识,希望这些内容能够带给大家实际用处,这也是我编辑mysql数据库事务知识这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

一、前言

只有InnoDB引擎支持事务,下边的内容均以InnoDB引擎为默认条件

二、常见的并发问题

1、脏读

一个事务读取了另一个事务未提交的数据

2、不可重复读

一个事务对同一数据的读取结果前后不一致。两次读取中间被其他事务修改了

3、幻读

幻读是指事务读取某个范围的数据时,因为其他事务的操作导致前后两次读取的结果不一致。幻读和不可重复读的区别在于,不可重复读是针对确定的某一行数据而言,而幻读是针对不确定的多行数据。因而幻读通常出现在带有查询条件的范围查询中

三、事务隔离级别

1、读未提交(READ UNCOMMITTED)

可能产生脏读、不可重复读、幻读

2、读已提交(READ COMMITTED)

避免了脏读,可能产生不可重复读、幻读

3、可重复读(REPEATABLE READ)(mysql默认隔离级别)

避免了脏读,不可重复读。通过区间技术避免了幻读

4、串行化(SERIALIZABLE)

串行化可以避免所有可能出现的并发异常,但是会极大的降低系统的并发处理能力

四、数据库日志有哪些?

1、undo日志

undo日志用于存放数据修改被修改前的值

UNDO LOG中分为两种类型,一种是 INSERT_UNDO(INSERT操作),记录插入的唯一键值;

一种是 UPDATE_UNDO(包含UPDATE及DELETE操作),记录修改的唯一键值以及old column记录。

2、redo日志

mysql会将一个事务中的所有sq先l记录到redo log中,然后再将记录从redo log同步到数据文件中

它可以带来这些好处:

  • 当buffer pool中的dirty page 还没有刷新到磁盘的时候,发生crash,启动服务后,可通过redo log 找到需要重新刷新到磁盘文件的记录;

  • buffer pool中的数据直接flush到disk file,是一个随机io,效率较差,而把buffer pool中的数据记录到redo log,是一个顺序IO,可以提高事务提交的速度;

3、binlog日志

用于数据库主从复制的记录,是二进制格式。在事务提交之后进行一个磁盘写入。

这里注意下redo log 跟binary log 的区别,redo log 是存储引擎层产生的,而binary log是数据库层产生的。假设一个大事务,对tba做10万行的记录插入,在这个过程中,一直不断的往redo log顺序记录,而binary log不会记录,直到这个事务提交,才会一次写入到binary log文件中

五、数据库事务控制

1、默认情况下,开启事务自动提交功能。每执行一个sql,都会对应一个事务的提交

2、 spring会将底层连接的自动提交特性设置为false。使用手动提交

六、事务的ACID特性

1、原子性(Atomicity)

事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败。

2、一致性(Consistency)

事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态。一致性状态是指:1.系统的状态满足数据的完整性约束(主码,参照完整性,check约束等) 2.系统的状态反应数据库本应描述的现实世界的真实状态,比如转账前后两个账户的金额总和应该保持不变。https://wenku.baidu.com/view/6bb581fdae45b307e87101f69e3143323868f5eb

3、隔离性(Isolation)

并发执行的事务不会相互影响,其对数据库的影响和它们串行执行时一样。比如多个用户同时往一个账户转账,最后账户的结果应该和他们按先后次序转账的结果一样。

4、持久性(Durability)

事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。

5、redo log和undo log实现了原子性、一致性、持久性

6、锁机制实现了隔离性

6.1、快照读

读取的是快照版本,也就是历史版本。普通的SELECT就是快照读

6.2、当前读

读取的是最新版本。UPDATE、DELETE、INSERT、SELECT … LOCK IN SHARE MODE、SELECT … FOR UPDATE是当前读。

6.3、锁定读

  在一个事务中,标准的SELECT语句是不会加锁,但是有两种情况例外。SELECT … LOCK IN SHARE MODE 和 SELECT … FOR UPDATE。

SELECT ... LOCK IN SHARE MODE

  给记录假设共享锁,这样一来的话,其它事务只能读不能修改,直到当前事务提交

SELECT ... FOR UPDATE

  给索引记录加锁,这种情况下跟UPDATE的加锁情况是一样的

对于以上关于MySQL数据库事务知识,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的数据库,相信你会喜欢上这些内容的。

您可能感兴趣的文档:

--结束END--

本文标题: 深入了解MySQL数据库事务知识

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

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

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

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

下载Word文档
猜你喜欢
  • 深入了解MySQL数据库事务知识
    下文主要给大家带来MySQL数据库事务知识,希望这些内容能够带给大家实际用处,这也是我编辑MySQL数据库事务知识这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。一、前言只有InnoDB引擎支持事务...
    99+
    2022-10-18
  • 深入了解mysql长事务
    前言: 本篇文章主要介绍MySQL长事务相关内容,比如说我们开启的一个事务,一直没提交或回滚会怎样呢,出现事务等待情况应该如何处理,本篇文章将给你答案。 注意:本篇文章并不聚焦于谈论事务隔离级别以及相关特性。而是...
    99+
    2022-05-20
    mysql 事务 mysql 长事务
  • 三分钟了解mysql事务知识
    本文主要给大家简单讲讲mysql事务知识,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql事务知识这篇文章可以给大家带来一些实际帮助。mysql事务;...
    99+
    2022-10-18
  • 深入了解Springboot核心知识点之数据访问配置
    目录自定义数据源配置多数据源配置使用SpringDataRepositories将@Entity定义与Spring配置分开配置JPA属性配置Hibernate命名策略配置Hibern...
    99+
    2022-11-12
  • MySql分表、分库、分片和分区知识深入详解
    一、前言 数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。 二、分片(类似分库) 分片是把数据库横向扩展(Scal...
    99+
    2022-11-11
  • 深入详解数据库事务(开发必用)
     一.事务的概念: 一组逻辑操作单元,时数据从一个状态转换到另一个状态。  二.事务处理的原则:         保证所有的事务都被当做一个操作单元来执行,即使出现了故障,也不能改变这种处置原则。要么与事务相关的数据全部被修改,...
    99+
    2023-09-11
    JDBC mysql 事务详解 java
  • 深入浅出:了解时序数据库 InfluxDB
    时序数据库经常应用于机房运维监控、物联网IoT设备采集存储、互联网广告点击分析等基于时间线且多源数据连续涌入数据平台的应用场景,InfluxDB专为时序数据存储而生,尤其是在工业领域的智能制造,未来应用潜力巨大。 数据模型 1.时序数据...
    99+
    2021-08-02
    深入浅出:了解时序数据库 InfluxDB
  • 关于MySQL数据库的事务隔离和MVCC的详细知识
    下文给大家带来有关MySQL数据库的事务隔离和MVCC内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL数据库的事务隔离和MVCC你一定会有所收获。1. ...
    99+
    2022-10-18
  • 入门MySQL数据库需要掌握的基础知识
    下面一起来了解下入门MySQL数据库需要掌握的基础知识,相信大家看完肯定会受益匪浅,文字在精不在多,希望入门MySQL数据库需要掌握的基础知识这篇短内容是你想要的。一、MySQL介绍二、MySQL安装1. ...
    99+
    2022-10-18
  • 快速入门MySQL数据库索引的基础知识
    本文主要给大家介绍快速入门MySQL数据库索引的基础知识,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下快速入门MySQL数据库索引的基础知识吧。--...
    99+
    2022-10-18
  • 【MySql系列】深入解析数据库索引
    写在前面  MySQL索引是数据库中一个关键的概念,它可以极大地提高查询性能,加快数据检索速度。但是,要充分发挥索引的作用,需要深入理解它们的工作原理和使用方式。 在本文中,我们将深入解析MySQL索引,探讨它们的重要性、类型、创建...
    99+
    2023-10-18
    数据库 mysql mysql索引 原力计划
  • MySQL数据库的实时备份知识点详解
    前言 数据库实时备份的需求很常见,MySQL本身提供了 Replication 机制,摘译官方介绍如下: MySQL Replication 可以将一个主数据库中的数据同步到一个或多个从数据库中。并且这个同...
    99+
    2022-10-18
  • 了解MySQL MVCC 原理,优化数据库事务处理
    了解MySQL MVCC 原理,优化数据库事务处理近年来,随着数据量的不断增长和应用需求的提升,数据库事务处理的性能优化成为了数据库开发和运维中一个非常重要的环节。MySQL作为最常用的开源关系型数据库之一,其MVCC(Multi-Vers...
    99+
    2023-10-22
    MySQL 优化 mvcc
  • 深入了解阿里云的数据库从哪进去的?
    阿里云数据库作为阿里云的核心产品之一,是阿里巴巴集团内部使用最广泛的数据存储解决方案之一。这篇文章将详细解释如何进入阿里云数据库,并且提供相关的使用建议和最佳实践。 一、阿里云数据库的简介阿里云数据库是由阿里云推出的一种高性能、高可用的分布...
    99+
    2023-11-04
    阿里 数据库
  • 阿里云数据库支持多大QPS?深入了解与解答
    阿里云数据库是一款功能强大、性能卓越的数据管理工具,能够满足企业对数据处理和分析的多种需求。那么,阿里云数据库支持多大QPS呢?这是很多用户关心的问题。本文将详细解答。 一、阿里云数据库的QPS首先,我们来了解一下QPS是什么。QPS是“Q...
    99+
    2023-10-28
    阿里 多大 数据库
  • MySQL数据库入门——浅析 视图和事务
    ==========视图============数据库中的虚拟表,相当于软链接作用:一张表中的数据给不同的权限用户提供访问假设一张表:公司员工绩效工资考核表工号    ...
    99+
    2022-10-18
  • MySQL总结(十二)数据库事务-详解
    数据库事务 1. 事务的应用场景说明 什么是事务 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。 ...
    99+
    2020-01-22
    MySQL总结(十二)数据库事务-详解
  • MySQL数据库本地事务原理解析
    在经典的数据库理论里,本地事务具备四大特征: 原子性 事务中的所有操作都是以原子的方式执行的,要么全部成功,要么全部失败; 一致性 事务执行前后,所有的数据都应该处于一致性状态---...
    99+
    2022-11-13
  • MySQL数据库的事务和索引详解
    目录一、事务:事务四大特性:并发事务带来哪些问题?(隔离所导致的一些问题)事务隔离级别有哪些?MySQL的默认隔离级别:二、索引:索引的作用:索引的分类:索引准则:索引的数据结构:总...
    99+
    2022-11-12
  • MySQL数据库事务transaction示例讲解教程
    目录1、什么是事务?2、和事务相关的语句只有这3个DML语句:insert、delete、update3、假设所有的业务都能使用1条DML语句搞定,还需要事务机制吗?4、事务的原理5...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作