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

Mysql的事务隔离级别以及事务的四大特性。

MySQL 的事务隔离级别是数据库管理系统中的一个重要概念,它决定了事务如何隔离和影响其他并发事务。MySQL 支持四种事务隔离级别,分别是:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。

  1. 读未提交(READ UNCOMMITTED)

    这是最低的隔离级别。在这个级别下,一个事务可以读取另一个尚未提交的事务的数据。这可能导致脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻读(Phantom Read)。

  2. 读已提交(READ COMMITTED)

    这是大多数数据库系统的默认隔离级别(但不是MySQL的默认级别)。在这个级别下,一个事务只能读取另一个事务已经提交的数据。这可以防止脏读的发生,但仍然可能出现不可重复读和幻读。

  3. 可重复读(REPEATABLE READ)

    在这个级别下,一个事务在整个过程中可以多次读取同一数据并看到同样的内容,即使其他事务修改了该数据。这是MySQL的默认隔离级别。在InnoDB存储引擎中,通过多版本并发控制(MVCC)来实现这一隔离级别,从而避免了脏读和不可重复读,但仍然可能出现幻读。

  4. 串行化(SERIALIZABLE)

    这是最高的隔离级别。在这个级别下,事务序列化执行,即每个事务完全串行地执行,没有任何并发执行。这可以避免所有并发问题,但会大大降低系统的并发性能。

    不同的隔离级别有不同的性能和并发控制特点。选择合适的隔离级别需要在性能和并发控制之间做出权衡。在实际应用中,通常根据业务需求和系统性能要求来选择合适的隔离级别。

另外可以参考:百度安全验证

具体模拟一下。

事务的四个特性(ACID)

一般来说,衡量事务必须满足四个特性:ACID,即 原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

  • 原子性(Atomicity):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

  • 一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

  • 隔离性(Isolation):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable),下面会详细说明。

  • 持久性(Durability):事务处理结束后,对数据的修改就是永久的,会持久化到硬盘上,即便系统故障也不会丢失。

数据库的三大范式:

参考:百度安全验证

http://www.lryc.cn/news/339285.html

相关文章:

  • 人工智能_大模型023_AssistantsAPI_01_OpenAI助手的创建_API的调用_生命周期管理_对话服务创建---人工智能工作笔记0159
  • 锁策略总结
  • 蓝桥杯备考day2
  • Mac电脑安装蚁剑
  • 品牌百度百科词条创建多少钱?
  • Linux安装及管理程序
  • Mybatis generate xml 没有被覆盖
  • MercadoLibre(美客多)入仓预约系统操作流程-自动化约号(开篇)
  • Unity TextMeshProUGUI 获取文本尺寸·大小
  • Sonar下启动发生错误,elasticsearch启动错误
  • Git常用命令以及异常信息汇总
  • 解释Python中的RESTful API设计和实现
  • 一、Nginx部署
  • C语言基础---指针的基本语法
  • 记录--病理切片图像处理
  • Android使用shape属性绘制边框内渐变色
  • 分类算法(数据挖掘)
  • scaling laws for neural language models
  • 水经微图IOS版5.2.0发布
  • 聚观早报 | 哪吒L上市定档;iPhone 16最新高清渲染图
  • 【C++】手搓 list 容器
  • LinkedList用法详解(Java)
  • 34. 在排序数组中查找元素的第一个和最后一个位置
  • 音乐文件逆向破解
  • xhci 数据结构
  • Go——Goroutine介绍
  • Centos7,部署etcd集群,基于二进制包,https安全通讯
  • 设置MariaDB,创建新库,新用户并授权其可以从任何主机登录
  • 每日一VUE——组件的生命周期
  • Redis中的BigKey