前言
我们都知道,mysql的InnoDB存储引擎支持事务操作,事务ACID特性中的隔离性可以使当前事务中的操作不受其他事务操作的影响,然而,这个隔离性是和隔离级别相关的特性,不同的隔离级别对隔离的严格性不同,对不同的隔离级别一一实验后,我们会发现,如果单单说事务的隔离性不受其他事务的影响,这句话是不太准确的,或者说是不严谨的说法。作为一个工科,我觉得能看到一个示例,比单纯看理论更能让人理解、记忆深刻。
一、查看和设置当前的隔离级别:
我们先登录mysql终端,查看和设置当前的隔离级别:
mysql> show variables like '%isolation%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ | //mysql默认的是RR的隔离级别
+---------------+-----------------+
1 row in set (0.00 sec)
或者执行以下命令:
mysql> select @@global.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+
| @@global.tx_isolation | @@tx_isolation |
+-----------------------+-----------------+
| REPEATABLE-READ | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)
// 修改事务隔离级别:
可以 help ISOLATION 查看一下都有哪些隔离级别,或者直接
set session transaction isolation level 事务隔离级别,如设置成RU隔离级别:
set session transaction isolation level READ UNCOMMITTED;
<