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博大精深,文 ...
随机推荐
- 【图像处理基础】LBP特征
前言 其中dsptian的博客不仅给出了LBP的实现,还计算了LBPH,计算LBP过程中有点小瑕疵,评论中有给出修改方法.除了使用power还可以使用bitxor函数实现. lbpcode = bit ...
- 使用kcptun安全代理访问服务
KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果. KCP:https://github.com/skywind ...
- Spring mvc 导出table到Excel
/** * * @Title: exportExcel * @Description: TODO(导出到excel) * @param Page page * @return ModelAndView ...
- linux 执行脚本
crontab -e 直接编辑定时脚本 保存后,在/var/spool/cron/下自动生成一个以用户名命名的脚本文件.
- java错误:找不到或无法加载主类
问题: 在 windows cmd 中编译后,运行 java 文件时,出现此错误 分析: 源文件 ClientDemo.java: package netdemo; public class Clie ...
- 《DSP using MATLAB》Problem 6.9
9月9日,我们怀念毛主席! 代码: %% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- hihocoder1490 Tree Restoration 模拟
There is a tree of N nodes which are numbered from 1 to N. Unfortunately, its edges are missing so w ...
- 简单说明 Virtual DOM 为啥快
Virtual DOM 就是用 JS 的对象来描述 DOM 结构的一个 DOM 树.如: var element = { tagName: 'ul', // 节点标签名 props: { // DOM ...
- oracle Awr报告
Select DBID,INSTANCE_NUMBER,SNAP_ID,TO_CHAR(END_INTERVAL_TIME,'YYYY-MM-DD HH24:MM:SS') AS END_TIME,T ...
- .NET本质论 实例
对象和值的比较 CLR的类型系统(其实就是通用类型系统(CTS),它定义了如何在运行库中声明,使用和管理类型,同时也是运行库支持跨语言集成的一个重要组成部分)将对应简单值的类型同对应传统"对 ...