MySQL运维11-MySQL的事务隔离级别

1、MySQL的事务隔离级别

事务隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也会越大。MySQL事务包含如下4个隔离级别,按隔离级别从低到高排列如下。

2、MySQL事务隔离级别的相关参数和命令

2.1、查看事务隔离级别

  • 如下两种方法都可以查询当前的事务隔离级别:
mysql> show  variables like '%tx%';
mysql> SELECT @@global.tx_isolation, @@session.tx_isolation;

2.2、设置事务隔离级别

2.2.1、在会话中设置事务隔离级别

SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

2.2.2、在配置文件中设置事务隔离级别

在配置文件内修改mysqld节的transaction-i solation参数的方式如下:

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

如上配置文件transaction-isolation选项的级别名中有连字符,但SET TRANSACTION语句的级别名中则没有连字符。

不建议更改InnoDB的事务隔离级别。一些传统的商业数据库,如Oracle,使用了类似read-committed的隔离级别。但由于绝大部分场景下,MySQL的用户都使用默认的隔离级别repeatable read,此隔离级别下的使用验证会比其他隔离级别完善得多]]

3、MySQL的多版本并发控制(MVCC)

当事务A发出一个一致性读之时,即一个普通的SELECT语句,InnoDB将给事务A一个时间点。如果另一个事务在该时间点被指定之后删除一行并提交,则事务A看不到该行已被删除。插入和更新的处理与此相似。这被称为多版本并发控制(multi -versioned concurrency control)。

4、总结

  1. InnoDB事务隔离级别从低到高分为READ UNCOMMITED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE四个级别,默认为REPEATABLE READ级别,一般不建议修改InnoDB的默认事务隔离级别。
  2. MySQL的多版本并发控制(MVCC)可以让一个事务从事务开始时间就建立一个全库的一致性视图,不会出现不可重复读问题(即在事务A开始时间之后其他事务提交的数据,事务A是看不到的)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值