mysql数据库之事务和隔离级别
事务和并发执行目的: 1、提高吞吐量,资源利用率 2、减少等待时间 连接管理器:接受请求/创建线程/认证用户/建立安全连接 并发控制:任何时候,只要有两个以上的用户试图读写同时一个文件/数据,都会带来并发控制问题, 多版本并发控制(MVCC):每个用户在操作数据的时候操作的都不是源数据,而是操作的是源数据的副本/快照,最后再把操作的快照合并到源数据上去 锁:最简单的并发控制机制就是实施锁|要想实现并发控制一个基础的工具就是"锁" 读锁(read):共享锁,允许其他人同时读,但不允许写! 写锁(write):独占锁,写的时候,既不允许其他人写,也不予许其他人读! 加锁:lock tables 表名 锁类型{read|write} 解锁:unlock tables :表示解除所有表的锁 锁粒度:从大到小(mysql服务器仅支持表锁,行锁需要有存储引擎的支持) 表锁:一下子锁定一张表 页锁:锁定一个数据块,页面。 行锁: 注意!:平常不需要给表手动添加锁,大多数情况下mysql内部就维持锁。 事务 存储引擎或服务器要支持事务必须满足4种测试,叫ACID测试 ACID 原子性:事务所引起的数据库操作,要么完全的反应出来,要么完全的都不反应! 一致性:事务在完成之前或之后结果是一致的,当事务结束之后,整个数据库服务器的状态是没有改变的 隔离性:事物之间影响最小,一个事务的中间过程,不能影响到另一个事务的正常执行过程 持久性:服务器出现崩溃了,仍然要保证数据在下一次恢复过来之后,仍然是有效的!,那也就意味着在内存运行完的数据要立即同步到存储设备上去! 1、事务提交之前就已经写出数据至持久性存储 2、结合事务日志完成,事务产生的是顺序IO(按次序存储到连续的存储块当中去)。数据文件是随机IO。 3、 事务日志 自我能够完成重做或撤销,在必要的时候进行自我修复 在事务引擎上,为了完成我们mysql事务,他的每一次操作都是首先在日志文件中完成。 也就意味着我们的增、删、查、修改都是在内存中完成,完成之后立即写到事务日志中去。过一段时间才会写到磁盘空间中去! 重做日志(redo log):我们的每一个操作,在真正写到数据库之前,他先写到日志里面去,下一次我们这个操作就算是崩溃了,他还可以根据我们的操作日志重新走一遍。 我们这一系列操作可以无限次的根据这个日志重复的执行N遍。 撤销日志(undo log):我们的每一次操作,在操作之前要把它原有的状态给他保留下来,万一将来我们需要还原回原来状态时,可以给他撤销此前所做的任何一个操作, 这些日志最终的目的是:为事务提供ACID兼容性的 事务状态 活动的:active 部分提交 失败的 终止的 提交的 隔离性: 隔离级别(级别从低到高): READ UNCOMMITTED读未提交:读取数据不需要加S锁,这样就不会跟被修改的数据上的X锁冲突 READ COMMITTED 读提交:别人只有提交之后,你才能看到 REPATABLE READ可重读:不管你提不提交数据,我这里第一次看到是什么样,一直到事务完成之后还是那个样。 SERIALIZABLE 可串行: mysql默认隔离级别为REPATABLE READ可重读 查看隔离级别:show global variables like '%iso%'; 修改隔离级别:set {session|global} 变量名='对应值'; |set tx_isolation='read-committed'; 并发控制依赖的技术手段: 锁 时间戳 多版本和快照隔离 事务命令 启动事务:start transaction; 回滚/撤销事务:rollback; 提交事务:commit 查看是否启动自动提交:select @@autocommit; 关闭自动提交:set autocommit=0; 事务支持保存点 |
|||
转载于:https://www.cnblogs.com/linux-s/p/11290084.html
mysql数据库之事务和隔离级别相关推荐
- mysql数据库的事务 acid 隔离级别 脏读 脏写 幻读 不可重复读
事务的四大特征 原子性(atomicity):要么全部提交(commit),要么全部回滚(rollback) 一致性(consistency):数据从一个合法状态转换成另一种合法状态 隔离性(isol ...
- mysql 事务sqlserver_SQLServer数据库:事务与隔离级别实例讲解
本文主要向大家介绍了SQLServer数据库:事务与隔离级别实例讲解,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 上班途中,你在一处ATM机前停了下来.正当你在敲入密码 ...
- mysql重复读导致余额不对_我所理解的MySQL之四:事务、隔离级别及MVCC
mysql教程栏目介绍MySQL相关的事务.隔离级别及MVCC. MySQL 系列的第四篇,主要内容是事务,包括事务 ACID 特性,隔离级别,脏读.不可重复读.幻读的理解以及多版本并发控制(MVCC ...
- MySQL高级篇——事务的隔离级别与简单应用
文章目录: 1.数据并发所存在的问题 1.1 脏写 1.2 脏读 1.3 不可重复读 1.4 幻读 2.SQL中事务的隔离级别 3.案例实操 3.1 查看与修改MySQL的隔离级别 3.2 读未提交- ...
- MySQL - 并发控制与事务的隔离级别【头歌】
目录 相关知识 并发操作可能产生的数据不一致性 MySQL的事务隔离级别 示例 第一关:并发控制与事务的隔离级别 编程要求 测试说明 代码如下 第二关:读脏 任务描述 相关知识 读脏 读脏产生的原因 ...
- 数据库的事务和隔离级别
事务的基本特性 原子性,都做或者都不做 一致性,从一个状态装换到另一个状态 隔离性,一个事物执行不能被其他事物干扰 持久性,事务提交后不能更改 事务的隔离级别 未提交读:一个事务内部所有的操作过程,对 ...
- 【mysql】关于事务的隔离级别
一.锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做dd ...
- MySQL数据库的四种隔离级别
一.首先介绍几个概念: 1,脏读: 又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改但是还未提交,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改并提交,这就导致了T2所读取到的 ...
- 〖Python 数据库开发实战 - MySQL篇㉜〗- 事务的隔离级别
万叶集
- 数据库事务的四大特性以及事务的隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
最新文章
- UOJ37. 【清华集训2014】主旋律
- shell下function报错
- iOS下音视频通信-基于WebRTC
- http://blog.sina.com.cn/s/blog_458f3c010100n4st.html
- idea中自动deployment的步骤
- 参数化查询为什么能够防止SQL注入
- web工作流管理系统开发之十六 主子流程参数传递的实现
- 列表、超链接、相对路径-HTML
- 人口空间化(三)GWR实现人口空间化
- nxlog以syslog方式发送日志
- 傅里叶变换时域和频域之间的对应关系
- Sublime text3 Version 3... 3207 激活码许可证(2019-07-19亲测有效)
- IOS微信内置浏览器音频加载问题
- 我想谈一谈外包,请不要“妖魔化”它。
- 云端守望者(下):十八般武艺
- 操作系统之光--鸿蒙
- 微信视频号自助下单刷平台
- 解决office2003 32位卸载不干净 无法安装office2013 64位在问题
- GAN ZOO - 第1节: 分析GAN的缺陷与改进方向,介绍典型的改进模型:CGAN、InfoGAN
- 有哪一些测不准原理?
热门文章
- mysql查询报错2014_MySQL错误2014的原因其他未缓冲的查询处于活动状态时无法执行查询...
- python第七天--文件练
- 记飞机大战小游戏1.0
- 分布式 id 生成系统 滴滴 Tinyid 快速入门
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_06-新增页面-前端-新增页面...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_10_反射_Class对象功能_获取Method成员方法...
- element的form表单中如何一行显示多el-form-item标签
- SVN实现自动更新(Windows平台)
- Android dex分包方案