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

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

# 设置全局隔离级别
 
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';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱摄影的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值