【第22期】观点:IT 行业加班,到底有没有价值?

MySQL数据库的事务隔离级别

原创 2015年11月18日 08:46:51

概述

继续说一下数据库的原理性基础——事务隔离级别。

事务隔离级别说的是并行执行的多个事务之间的关系,另外一个原理性基础——事务传播属性,这个概念说的是存在包含管理的多个事务之间的关系(这个概念应该是在代码层面的,而不是数据库层面的,比如常说的spring事务传播属性)。

事务隔离级别

四种级别:

关键字 隔离级别
read uncommitted 不提交读(其他事务未提交的修改可以读取到)
read committed 提交读(其他事务的修改只有当事务提交后才可以读取到)
repeatable read 可重复读
serializable 串行化

四种级别的影响

隔离级别 脏读可能性 不可重复读可能性 幻读可能性
read uncommitted Y Y Y
read committed N Y Y
repeatable read N N Y
serializable N N N

说一下三种读取问题:
脏读是读取到了另外一个事务未提交的修改,但是该修改最终被回滚取消了。
不可重复读是第一次读取到了一的数据,在第二次读取时被另一个事务修改了,也就是两次读取到数据不一样。
幻读是第二次读取到的数据比第一次读取到的数据多的某些行,也就是在两次读取之间其他的事务进行了插入新行的操作,出现了幻影行。

虽然,上表是《高性能MySQL》给出的,错误是没有。但是要注意,这里给出的是“可能性”,对于InnoDB来说在默认的repeatable read隔离级别是通过多版本并发控制实现了避免幻读功能的。也就是说对于常用的InnoDB引擎来说repeatable read隔离级别完全避免的脏读、不可重复读和幻读的。

隔离级别的修改

1.全局修改

修改mysql.ini配置文件,在最后加上:
[mysqld]
transaction-isolation = REPEATABLE-READ

2.在控制台输入:set session transaction isolation level repeatable read;

3.在应用层面的连接池处修改

dbcp连接池属性:
这里写图片描述

推荐文章

1.下面这篇文章截取了《高性能MySQL》里面的描述,另外添加了蛤蜊级别的修改方法:http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html

2.下面这篇说道了事务隔离级别和锁机制(隔离级别也是借用的《高性能MySQL》内容):http://www.cnblogs.com/wenfeng762/archive/2011/11/06/2237253.html

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Spring事务管理--(一)数据库事务隔离级别与mysql引擎基础讲解

一、前言 本篇文章来自网络整理,很简单,但是很实用对于初级和中级工程师。 原创地址1:http://www.cnblogs.com/hollen/archive/2012/05/13/2498309....

mysql数据库不可重复读事务隔离级别问题

在mysql数据库中,默认的事物隔离级别为不可重复读,而mysql对不可重复读实现得比较诡异,情况如下: 假如有两个事务同时执行两次查询和一次修改数据库中一张表,为啦方便起见下面使用A事务和B事务进行说明   启动A事务——>A查询表——>启动B事务——&...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Mysql数据库事务的隔离级别和锁的实现原理分析

mysql Innodb 解决各个不同事物隔离级别所产生问题的方法。

Mysql数据库隔离级别

1、隔离级别分以下几种:       未提交读。事务不需要提交就可以读。        提交读。        可重复读。        &...

0151 Mysql数据库事务的隔离级别和锁的实现原理分析

MySQL数据库的事务隔离级别相信很多同学都知道. 大家有没有想过它是如何实现的呢?带着这些问题我翻阅了相关数据库的书籍和资料,把我的理解写下来. 一:事务隔离级别 mysql数据库的隔离界别如...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)