当前位置: 首页 > news >正文

MySQL的事务隔离级别、锁机制、MVCC的原理

1、事务的概述

事务是数据库中一个单独执行的单元(Unit),它通常由高级数据库操作语言(例如 SQL)或编程语言(例如 C++、Java 等)书写的用户程序的执行所引起。当在数据库中更改数据成功时,在事务中更改的数据便会提交,不再改变;否则,事务就取消并回滚,更改无效。

事务必须满足四个属性,即:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),即 ACID 四种属性。

1.1 原子性(Atomicity)

原子性意味着事物的整体性和不可分割性,为了保证事务的总体目标,事务必须具有原子性,即当数据修改时,要么全部执行,要么全部不执行,即不允许事务部分地完成,避免了只执行这些操作的一部分而带来的错误。原子性要求事务必须被完整执行。

1.2 一致性(Consistency)

一个事务执行之前和执行之后数据库数据必须保持一致性状态。数据库的一致性状态应该满足模式锁指定的约束,那么在完整执行该事务后数据库仍然处于一致性状态。为了维护所有数据的完整性,在关系型数据库中,所有的规则必须应用到事务的修改上。数据库额一致性状态由用户来负责,由并发控制机制实现,例如银行转账,转账前后两个账户金额之和应保持不变,由于并发操作带来的数据不一致性包括数据的修改、读“脏”数据、不可重复读和产生幽灵数据。

1.3 隔离性(Isolation)

隔离性也被称为独立性,当两个或多个事务并发执行时,为了保证数据的安全性,将一个事务内部的操作与事务的操作隔离起来,不被其他正在进行的事务看到。隔离性是指每个事务在自己的空间发生,和其他发生在系统中的事务隔离,而且事务的结果只在它完全被执行时才能看到。即使这样的一个系统中同时发生多个事务,隔离性也可以保证特定的事务在完成之前,其结果是不被公布的。

1.4 持久性(Durability)

持久性也被称为永久性,事务完成后,数据库管理系统(DMMS)保证它对数据库中的数据的修改是永久性的,当系统或介质发生故障时,该修改也永久保存。持久性一般通过数据库备份与恢复来保证。

严格来说,数据库事务属性(ACID)都是由数据库管理系统来进行保证的,在整个应用程序运行过程中应用无须去考虑数据库的 ACID 实现。

关于 MySQL 事务的详细应用,请点击并浏览本博客的文章:《MySQL事务的应用》

2、事务的隔离级别

事务具有独立的空间,在 MySQL 服务器中,用户通过不同的会话执行不同的事务,在多用户环境中,许多 RDBMS 会话在任意指定时刻都是活动的。为了使这些事务互不影响&#

相关文章:

  • 【pytest进阶】pytest详解及进阶使用
  • 开源 Arkts 鸿蒙应用 开发(一)工程文件分析
  • QT中使用QVTKOpenGLNativeWidget显示三维图形(VTK9.x以上版本)
  • Python FastAPI详解
  • CentOS7 安装最新版 Docker
  • LLM大模型系列(十):深度解析 Prefill-Decode 分离式部署架构
  • 代码随想录打卡第三十天 动态规划
  • java集合(十七) ---- TreeSet 类
  • win10系统外接触控显示屏触摸校准
  • mysql 学习
  • Sequelize mysql2驱动 不支持 caching_sha2_password
  • 【wsl】docker
  • datawhale Dify动手实践教程 第1次笔记
  • 课设作业图书管理系统
  • UWB协议精读:IEEE 802.15.4z-2020,15. HRP UWB PHY, STS, HRP-ERDEV, BPRF, HPRF,
  • 探秘卷积神经网络(CNN):从原理到实战的深度解析
  • 红队攻防渗透技术实战流程:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
  • 生成对抗网络(GAN)与深度生成模型实战
  • CppCon 2016 学习:Rainbow Six Siege: Quest for Performance
  • 移动端 WebView 页面性能调试实战:WebDebugX等工具协同与优化
  • 南阳网站关键词/网络营销发展现状与趋势
  • 摄影网站设计论文/推广排名seo
  • 建立网站需要准备的材料/杭州关键词自动排名
  • 烟台网站开发/网页优化公司
  • 网站应该怎么建设/制作公司网站大概多少钱
  • 做网站前台要学什么课程/各大搜索引擎提交入口