2022
我们一起努力

MySQL中隔离级别的示例分析 - MySQL数据库

这篇文章主要介绍MySQL中隔离级别的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

MySQL入门–事务隔离级别

1)
隔离级别介绍

如果一个客户机的事务更改了数据,其他客户机的事务是应发现这些更改还是应与其隔离,事务隔离级别可以确定同时进行的事务在访问相同数据时彼此交互的方式。使用存储引擎可实现隔离级别。隔离级别选项在不同的数据库服务器之间是不一样的,因此,
InnoDB
所实现的级别可能与其他数据库系统所实现的级别并不完全对应。InnoDB
可实现四种隔离级别,用于控制事务所做的更改在多大程度上可由其他同时进行的事务注意到。四种隔离级别如下:


READ UNCOMMITTED:允许事务查看其他事务所进行的未提交更改;允许发生“脏”
读、不可重复读和虚读。


READ COMMITTED:允许事务查看其他事务所进行的已提交更改;允许发生不可重复读和虚读。未提交的更改仍不可见。


REPEATABLE READ:确保每个事务的
SELECT
输出一致,InnoDB
的默认级别;无论其他事务所做的更改是否已提交,两次都会获得相同的结果。换句话说,也就是不同的事务会对相同的数据产生一致的结果。


SERIALIZABLE:将一个事务的结果与其他事务完全隔离;与
REPEATABLE READ
类似,但其限制性更强,即一个事务所选的行不能由其他事务更改,直到第一个事务完成为止。


2)
设置隔离级别

系统默认事务级别为:repeatable-read

方法一、
服务器启动时设置级别。

– 
在mysqld
命令中使用–transaction-isolation选项。

– 
在配置文件中设置transaction-isolation:

[mysqld]

transaction-isolation = <isolation_level>

在选项文件中或在命令行上将<isolation_level>
值设置为:


READ-UNCOMMITTED


READ-COMMITTED


REPEATABLE-READ


SERIALIZABLE

方法二、使用SET TRANSACTION ISOLATION LEVEL
语句为正在运行的服务器设置。


语法示例:

SET GLOBAL TRANSACTION ISOLATION LEVEL <isolation_level>;

SET SESSION TRANSACTION ISOLATION LEVEL <isolation_level>;

SET TRANSACTION ISOLATION LEVEL

<isolation_level>;

对于SET TRANSACTION ISOLATION LEVEL
语句,将<isolation_level>
值设置为:


READ UNCOMMITTED


READ COMMITTED


REPEATABLE READ


SERIALIZABLE。

此事务级别可以全局设置,也可以按会话设置。如果没有显式指定,则事务隔离级别将按会话进行设置。例如,以下语句会将当前mysql
会话的隔离级别设置为READ COMITTED:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

该语句相当于:

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

要设置所有后续mysql
连接的默认级别,请使用GLOBAL
关键字,而不是SESSION:

SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

注:设置的全局默认事务隔离级别适用于从设置时起所有新建立的客户机连接。现有连接不受影响。

方法三、SET GLOBAL TX_ISOLATION

        

需要
SUPER
权限

Mysql>set global tx_isolation=’ READ-COMMITTED’

         Mysql>select @@tx_isolation;

         Mysql>show variables like ‘tx_isolation’;

transaction_isolation MySQL 5.7.20引入,目的是替换即将弃用的tx_isolation(MySQL 8.0);

 (root@localhost) [information_schema]> show variables like '%isolat%';

+———————–+—————–+

| Variable_name         | Value           |

+———————–+—————–+

| transaction_isolation | REPEATABLE-READ |

| tx_isolation          | REPEATABLE-READ |

+———————–+—————–+

MySQL中隔离级别的示例分析 - MySQL数据库

transaction_isolation
was added in MySQL 5.7.20 as an alias for tx_isolation, which is now deprecated and is removed in MySQL 8.0. Applications should be adjusted to use
transaction_isolation
in preference to
tx_isolation.

以上是“MySQL中隔离级别的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注云行业资讯频道!

赞(0)
文章名称:《MySQL中隔离级别的示例分析 - MySQL数据库》
文章链接:https://www.fzvps.com/95019.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!