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级进行设置
- SET tx_isolation=''
- #可选项:
- #READ-UNCOMMITTED
- #READ-COMMITTED
- #REPEATABLE-READ
- #SERIALIZABLE
服务器选项中指定
- vim /etc/my.cnf
- [mysqld]
- transaction-isolation=SERIALIZABLE
并发控制
当使用SERIALIZABLE事物级别的时候,两个事物相互访问彼此正在访问的资源时会产生死锁的问题,Mysql会终止其中一个事物来结束死锁。
文档更新时间: 2020-05-25 12:16 作者:张尚