layout: post
title: Mysql事物隔离级别
date: 2018-05-15
tags: [“Mariadb”,”软件服务”]


1、事务隔离级别:从上至下更加严格

READ UNCOMMITTED 可读取到未提交数据,产生脏读
READ COMMITTED 可读提交数据,但未提交数据不可读,产生不可重复读,即可读取到多个提交数据,导致每次读取数据不一致
REPEATABLE READ 可重复读,多次读取数据都一致,产生幻读,即读取过程中,即使有其它提交的事务修改数据,仍只能读取到未修改前的旧数据。此为MySQL默认设置
SERIALIZABILE 可串行化,未提交的读事务阻塞修改事务,或者未提交的修改事务阻塞读事务。导致并发性能差

MVCC: 多版本并发控制,和事务级别相关

2、指定事务隔离级别

服务器变量tx_isolation指定,默认为REPEATABLE-READ,可在GLOBAL和SESSION级进行设置

  1. SET tx_isolation=''
  2. #可选项:
  3. #READ-UNCOMMITTED
  4. #READ-COMMITTED
  5. #REPEATABLE-READ
  6. #SERIALIZABLE

服务器选项中指定

  1. vim /etc/my.cnf
  2. [mysqld]
  3. transaction-isolation=SERIALIZABLE

并发控制

当使用SERIALIZABLE事物级别的时候,两个事物相互访问彼此正在访问的资源时会产生死锁的问题,Mysql会终止其中一个事物来结束死锁。

文档更新时间: 2020-05-25 12:16   作者:张尚