mysql 事务学习
1.事务
逻辑上的一组操作,组成这组操作的各个逻辑单元要么一起成功,要么一起失败.
2.事务特性
原子性:强调事务的不可分割.
一致性:强调的是事务的执行的前后,数据的完整性要保持一致.
隔离性:一个事务的执行不应该受到其他事务的干扰.
持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库.
3.事务的安全性问题
脏读 :一个事务读到另一个事务还没有提交的数据.
不可重复读 :一个事务读到了另一个事务已经提交的update的数据,导致在当前的事务中多次查询结果不一致.
虚读/幻读 :一个事务读到另一个事务已经提交的insert的数据,导致在当前的事务中多次的查询结果不一致.
4.事务的隔离级别
MYSQL隔离级别:repeatable read Oracle隔离级别:read committed
* read uncommitted
现象:未提交读.脏读,不可重复读,虚读都可能发生.
原因:在读取时是不会加锁的,但在更新数据时,对其加行级共享锁(其它事务不能更改,但可以读取,导致脏读),事务结束时释放。
* read committed
现象:已提交读.避免脏读.但是不可重复读和虚读有可能发生.
原因:这种隔离级别表示读取的数据是已提交成功的,解决了脏读问题,解决方式是给写数据加行级排他锁,这样写过程是无法读取的,直到事务处理完毕才释放排他锁,给读的数据加行级共享锁,这样读的时候也是无法写的,但是一旦读完该行就释放共享锁。这种模式下虽然处理了脏读,但是并没有处理丢失更新和不可重复读的问题.
* repeatable read
现象:重复读.避免脏读,不可重复读.但是虚读有可能发生.
原因:在这种隔离级别下可以重复的读取数据了,顾名思义,解决了不可重复读的问题,同时也解决了更新丢失的问题。解决办法:给写的数据加行级排他锁,事务结束释放,给读的数据加行级共享锁,事务结束后释放。这种模式还是没有处理幻读的问题
* serializable
现象:串行化的.避免脏读,不可重复读,虚读的发生.
原因:事务读数据则加表级共享锁,事务写数据则加表级排他锁,幻读问题也得到了解决
5.解决
隔离级别 产生问题
read uncommitted
脏读
read committed
脏读不可重复读
repeatable read
不可重复读
serializable
虚读/幻读
mysql 事务学习的更多相关文章
- MySQL事务学习-->隔离级别
MySQL事务学习-->隔离级别 6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 数据库是要被广大客户所共享访问的,那么在数据库操作过程中 ...
- Mysql事务学习笔记
Mysql事务学习笔记 1.事务概述 事务是数据库的执行单元,它包含了一条或多条sql语句,进行的操作是要么全部执行,要么全部都不执行. 2.事务执行命令 语法格式: start transactio ...
- MySQL事务(学习笔记)
MySQL事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事 ...
- [转]MySQL事务学习-->隔离级别
From : http://blog.csdn.net/mchdba/article/details/12837427 6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性 ...
- MySQL事务学习
- Mysql事务隔离级别学习
这篇文章主要谈谈Mysql事务隔离级别的区别,以及自己的一些感受. 自己一直以来没搞懂“可重复读”和可提交读“两者之间的区别,通过此次的实践,清楚了两者之间的区别.废话不说,先上图看看这几个事务隔离级 ...
- MySQL事务控制语句(学习笔记)
MySQL事务控制语句(学习笔记) MySQL事务控制语句 在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作.因此开启一个事务必须使用begi ...
- MYSQL数据库学习十五 事务
15.1 事务概述 当多个用户访问同一份数据,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据库记录的更新从一个一致性状态变为另一个一致性状态,使用事务处理是非常必要的. 事务有以 ...
- 深入学习MySQL事务:ACID特性的实现原理
事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理. MySQL博大精深,文 ...
随机推荐
- [LeetCode&Python] Problem 427. Construct Quad Tree
We want to use quad trees to store an N x N boolean grid. Each cell in the grid can only be true or ...
- Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
Unity4大光源之点光源 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- HDU - 2892:area (圆与多边形交 求面积)
pro:飞行员去轰炸一个小岛,给出炸弹落地点的位置信息,以及轰炸半径:按顺时针或者逆时针给出小岛的边界点. 求被轰炸的小岛面积. sol:即是求圆和多边形的面积交. (只会套板子的我改头换面,先理解然 ...
- MyBatis #{} 取值注意事项
正确写法#{key} 错误写法#{key } #{}中不能加空格,不然会报错
- LOJ 6277:数列分块入门 1(分块入门)
#6277. 数列分块入门 1 内存限制:256 MiB时间限制:100 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论 3 测试数据 题目描述 给出一 ...
- happens-before俗解
happens-before俗解 学习Java并发,到后面总会接触到happens-before偏序关系.初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人 ...
- (9)模板层 - templates(模板语言、语法、取值、过滤器、变量的使用)
django的模板语言:DTL 模板语言的变量传入 这个是标签 {{ 变量名 }} {{ 变量名 }} #模板语言的替换可以在模板中的任意位置生效 PS:通过 . 可以做深度查询 模板语言的过滤器 ...
- Go Example--指针
package main import ( "fmt" ) func zeroval(ival int) { ival = 0 } func zeroptr(iptr *int) ...
- webpack 搭建问题汇总
总结一下遇到的问题: 1.这样的警告(The 'mode' option has not been set, webpack will fallback to 'production' for thi ...
- CSS Overrides: Friend or Foe?
转自:http://www.callumhart.com/blog/css-overrides-friend-or-foe Anyone familiar with CSS will know how ...