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; 事务支持保存点 |
|||
mysql数据库之事务和隔离级别的更多相关文章
- MySQL/MariaDB数据库的事务和隔离级别
MySQL/MariaDB数据库的事务和隔离级别 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.事务概述 1>.事务Transactions 一组原子性的SQL语句 ...
- 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别
1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...
- 【mysql】关于事务的隔离级别
一.锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做dd ...
- mysql innodb引擎事务的隔离级别
一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...
- 数据库事务的四大特性以及事务的隔离级别(mysql)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...
- MySQL数据库事务的四大特性以及事务的隔离级别
一.事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因 ...
- 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&隔离级别
数据库事务的四大特性以及事务的隔离级别 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...
- 数据库事务的四大特性以及4种事务的隔离级别-以及对应的5种JDBC事务隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- MySQL事务的隔离级别
为什么需要隔离 当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,在介绍数据库提供的各种隔离级别之前,我们先看看如果不考虑事务的隔离性,会发生的几种 ...
随机推荐
- c# 笔试面试题01
一.抽象与接口的区别: ,抽象(abstract): ()抽象类中可以有抽象方法,也可没有: ()抽象方法包含实现,也可以由子类实现: ()抽象类不能被sealed修饰,只能使用abstract关键字 ...
- chrome 模拟发送请求的方法
chrome f12 看到了web页面的请求,有时候想修改一下参数重新执行一下怎么办? 如果是get方法.参数不多可以直接在浏览器中打开.否则post方法参数多时很多人会复制到postman中执行,但 ...
- git开发中常用命令
项目代码克隆岛本地 git clone 项目地址 #如:git clone http://cngit.fir.ai/data_service/distributedstorage.git 克隆指定分支 ...
- Linux性能优化实战学习笔记:第五十讲
一.上节回顾 上一节,我以 ksoftirqd CPU 使用率高的问题为例,带你一起学习了内核线程 CPU 使用率高时的分析方法.先简单回顾一下. 当碰到内核线程的资源使用异常时,很多常用的进程级性能 ...
- Salesforce Lightning开发学习(四)重写新建/更新按钮
重写新建/更新按钮的原因是因为项目需要用户在新建数据时从接口对数据进行校验,保证数据的有效性,同时获取接口返回的部分数据完成信息填充,而Sales force的trigger仅支持@future方法异 ...
- Python2.x升级python3.x【升级步骤和错误总结】
网上帖子一大堆,按照那些教程操作,确实可以成功安装.但是安装成功之后呢,pip还是用的python2的pip. 切换到python3的pip之后,发现无法下载模块,还会有很多报错信息.以及" ...
- SQL ------------- 最大与最小函数
sql max() 函数 求最大值,可以查询汉字,字母,日期,数字 注意:字母和汉字按照 a-z 依次查找,第一个最大的就是需要的 比如:有两个字母或汉字都是 ...
- mgcp的alg功能实现
刚吃了一碗还算正宗的潮汕牛筋丸粿条和一颗卤蛋,算是给自己的生日礼物. 这一周工作只围绕了一个主题“mgcp的alg功能实现”. 1. 应用场景: 一台运行mgcp语音协议的终端设备,经过一台路由器到达 ...
- skywalking集群部署
1.需求:有两台服务器分别装了app,对这些app进行性能监控 三台服务器:10.10.20.198作为服务端展示性能数据,10.10.20.64客户端,装btam系统,10.10.20.63客户端装 ...
- springboot 解决Jackson导致Long型数据精度丢失问题
代码中注入一个bean即可: /** * 解决Jackson导致Long型数据精度丢失问题 * * @return */ @Bean("jackson2ObjectMapperBuilder ...