首页 > 数据库 >MySQL的事务默认隔离级别是什么

MySQL的事务默认隔离级别是什么

时间:2024-07-04 19:57:31浏览次数:19  
标签:隔离 READ 默认 REPEATABLE MySQL 级别 SELECT

MySQL 的默认隔离级别是 REPEATABLE READ

隔离级别概述

数据库的隔离级别决定了事务相互隔离的程度,从而影响到并发事务的行为。SQL 标准定义了四种隔离级别:

  1. READ UNCOMMITTED(未提交读)
  2. READ COMMITTED(提交读)
  3. REPEATABLE READ(可重复读)
  4. SERIALIZABLE(可串行化)

每种隔离级别解决不同类型的并发问题,包括脏读、不可重复读和幻读。以下是对每种隔离级别的简要描述:

  • READ UNCOMMITTED: 允许事务读取未提交的数据(可能导致脏读)。
  • READ COMMITTED: 只允许事务读取已提交的数据(防止脏读,但可能出现不可重复读)。
  • REPEATABLE READ: 保证在同一个事务内多次读取相同数据结果一致(防止脏读和不可重复读,但可能出现幻读)。
  • SERIALIZABLE: 最严格的隔离级别,通过强制事务串行执行来防止所有并发问题(防止脏读、不可重复读和幻读)。

MySQL 的默认隔离级别

MySQL 的默认隔离级别是 REPEATABLE READ。这种隔离级别在大多数情况下提供了一个良好的平衡,既能保证数据一致性,又能提供较好的并发性能。

如何查看和设置隔离级别

您可以通过以下方式查看当前会话和全局的隔离级别:

查看当前会话隔离级别

SELECT @@tx_isolation;

或者在 MySQL 8.0 及更高版本中:

SELECT @@transaction_isolation;

查看全局隔离级别

SELECT @@global.tx_isolation;

或者在 MySQL 8.0 及更高版本中:

SELECT @@global.transaction_isolation;

设置当前会话隔离级别

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

设置全局隔离级别

SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;

示例

查看当前会话的隔离级别

SELECT @@tx_isolation;
-- 或者
SELECT @@transaction_isolation;

将当前会话的隔离级别设置为 READ COMMITTED

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

将全局隔离级别设置为 READ COMMITTED

SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

注意:改变全局隔离级别只会影响在更改后新创建的会话,已经存在的会话不会受到影响。

结论

MySQL 的默认事务隔离级别是 REPEATABLE READ,这种隔离级别在大多数情况下提供了良好的数据一致性和并发性能。根据具体应用需求,您可以在会话级别或全局级别调整隔离级别以适应特定的使用场景。

标签:隔离,READ,默认,REPEATABLE,MySQL,级别,SELECT
From: https://www.cnblogs.com/gongchengship/p/18284572

相关文章

  • Postgresql 的默认隔离级别
    PostgreSQL的默认事务隔离级别是READCOMMITTED。隔离级别概述数据库的隔离级别决定了事务在并发环境下相互隔离的程度,从而影响到并发事务的行为。SQL标准定义了四种隔离级别:READUNCOMMITTED(未提交读)READCOMMITTED(提交读)REPEATABLEREAD(可重复读)SERIALIZABLE(可串行化)......
  • mysql主从复制
    一、主从复制通过主从复制,可以实现读写分离。1.什么是主从复制MySQL主从复制是一种数据库复制技术,用于将一个MySQL数据库服务器的更改同步到其他MySQL数据库服务器。在主从复制中,有一个主数据库(Master)和一个或多个从数据库(Slave)。主数据库负责接收和处理所有的写操作,而从数据......
  • SAAS下一个mysql实例多个租户的库
    在多租户环境中,根据tenantCode字段动态切换数据库是常见的需求。这里将展示如何在SpringBoot和MyBatis项目中实现这一功能,具体步骤包括配置数据源、定义数据源路由逻辑以及在业务代码中使用。1.配置数据源首先,你需要为你的应用配置一个主数据源,这个数据源将被用于连接到包含所......
  • Windows 安装DBeaver,并使用DBeaver进行数据库的操作(达梦数据库、MySQL数据库等)
    安装DBeaver可视化工具安装前准备准备环境JDK17DBeaver安装包达梦数据库驱动DBeaver代理包开始安装MySQL连接&操作MySQL连接操作达梦数据库连接&操作达梦数据库驱动DBeaver加载达梦数据库驱动达梦数据库连接操作免责声明安装前准备准备环境JDK17安装地址(官......
  • django models对应的mysql类型
    Django模型字段类型与MySQL数据库类型的对应关系如下:Django模型字段类型MySQL数据库类型AutoFieldBIGINTUNSIGNEDCharFieldVARCHARIntegerFieldINTDecimalFieldDECIMALDateFieldDATEDateTimeFieldDATETIMEFileField,ImageFieldVARCHAR(用于文件路径)BooleanFieldBOOL(如......
  • MySQL单表千万级数据查询优化大家怎么说(评论有亮点)
    题图来自APOD上次写了一篇MySQL优化实战的文章“MySQL千万级数据从190秒优化到1秒全过程”。这篇文章主要还是在实战MySQL优化,所以从造数据到查询SQL优化SQL都没有业务或者其它依赖,优化的技巧也不涉及软件架构就是纯SQL优化。由于笔者经验有限和篇幅限制没有展开讲很多细节,其......
  • mysql日志
    日志类型查询日志日志类型描述查询文件开启方式一般查询日志记录服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,generallog都会将其记录下来SHOWVARIABLESLIKE'general_log_file';SETGLOBALgeneral_log='ON';慢......
  • MySQL—常用的数据类型
    数据类型整型1.创建一个含有无符号/有符号整型的字段的表CREATETABLEL1( idtinyintunsigned#无符号)CREATETABLEL2( idtinyint#默认为有符号)数值型(bit)2.数值型(bit)的使用小数3.数值型(小数)的基本使用 字符串4.字符串的基本使用#演示字符......
  • MySQL5.7.x绿色版安装过程
    MySQL5.7.x绿色版安装过程记一下自己安装MySQL的过程,方便以后用官网下载MySQL5.7.x绿色版压缩包我这里使用的是mysql-5.7.42-winx64.zip解压,并配置环境变量(可选)环境变量要配置到MySQL目录下的bin目录例如:C:\DevelopmentTools\mysql-5.7.42-winx64\bin在MySQL目录......
  • MySQL中的可插拔身份验证(Pluggable Authentication)(二)
    PluggableAuthentication(PAM,即可插拔式认证模块)是一种高效且灵活的用户级别的认证方式,广泛应用于现代操作系统,特别是Linux服务器中。它允许数据库管理员(DBAs)为MySQL用户帐户选择和更改不同的认证方法。1身份验证插件客户端/服务器兼容性可插拔身份验证使MySQL帐户在选择身......