当前位置: 首页> 科技> 名企 > mysql设置数据库隔离级别及各个隔离级别的作用

mysql设置数据库隔离级别及各个隔离级别的作用

时间:2025/7/12 17:19:02来源:https://blog.csdn.net/xfp5158/article/details/141953107 浏览次数:0次

一、通过命令设置隔离级别

# 设置全局隔离级别
 
set global transaction isolation level REPEATABLE READ;
set global transaction isolation level  READ COMMITTED;
set global transaction isolation level READ UNCOMMITTED;
set global transaction isolation level SERIALIZABLE;
 
#设置会话隔离级别 
 
set session transaction isolation level REPEATABLE READ;
set session transaction isolation level READ COMMITTED;
set session transaction isolation level READ UNCOMMITTED;
set session transaction isolation level SERIALIZABLE;

 数据库的几种隔离级别:


READ UNCOMMITTED(读未提交数据)

允许事务读取未被其他事务提交的变更数据,会出现脏读、不可重复读和幻读问题。
 

READ COMMITTED(读已提交数据)

只允许事务读取已经被其他事务提交的变更数据,可避免脏读,仍会出现不可重复读和幻读问题。
 

REPEATABLE READ(可重复读)

确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新,可以避免脏读和不可重复读,仍会出现幻读问题。


SERIALIZABLE(序列化)

确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,可避免所有并发问题,但性能非常低。

二、通过配置文件设置隔离级别

[mysqld]
transaction-isolation = REPEATABLE-READ
transaction-isolation = READ-COMMITTED
transaction-isolation = READ-UNCOMMITTED
transaction-isolation = SERIALIZABLE

 三、查看隔离级别

SELECT @@GLOBAL.transaction_isolation
SELECT @@SESSION.transaction_isolation
show variables like '%iso%';

四、mysql8.0 通过配置文件修改隔离级别


在CentOS 7.9上安装的MySQL 8.0,要通过配置文件修改事务隔离级别,你需要编辑MySQL的配置文件my.cnf(在非Windows系统上通常位于/etc/my.cnf或/etc/mysql/my.cnf)。

以下是修改隔离级别的步骤:

打开my.cnf文件。

在[mysqld]部分添加或修改transaction-isolation选项。例如,要设置隔离级别为READ-COMMITTED,你可以添加以下行:

[mysqld]
transaction-isolation = READ-COMMITTED

保存并关闭文件。

重启MySQL服务以使更改生效:

sudo systemctl restart mysqld

验证更改是否生效。登录到MySQL,并执行以下命令:

mysql -u root -p

然后,在MySQL提示符下执行:

SHOW VARIABLES LIKE 'transaction_isolation';

关键字:mysql设置数据库隔离级别及各个隔离级别的作用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: