阿里云上的rds 的隔离级别read committed 而不是repeatable-read设置原因
阿里云上的rds 的隔离级别 是read committed ,而不是原生mysql的“可重复读(repeatable-read)”,他们是基于什么原因这样设置的?
show variables like 'transaction_isolation'; --结果如下
Variable_name Value
transaction_isolation READ-COMMITTED
我们都知道:
提交读(不可重复读)和可重复读的区别在于:
- 提交读 : 在本事务未提交之前其他事务的增删改操作提交后会影响读的结果。 读的是最新结果 。
- 可重复读 : 在读的过程中数据始终是事务启动时的数据状态,未提交之前其他事物的增删改操作提交后都不会影响读的结果。 读的是快照结果
也就是说,read committed 隔离级别下, 同一个事务中,多次读取数据,可能是不一样的, 因为数据有可能已经被别的事务修改了。难到阿里云的rds不怕读的事务中,数据被修改吗?
为此,我咨询以前的ali内部同事,得到的回复是,需要研发在代码中控制好。这样是为了提高并发性。
read committed 到底是怎样提供并发性的呢?
1、事务隔离级别为 读提交 时,写数据 只会锁住相应的行
2、事务隔离级别为 可重复读(更容易死锁) 时,如果 检索条件有索引 (包括主键索引)的时候,默认 加锁方式是next-key 锁 ;如果 检索条件没有索引 ,更新数据时 会锁住整张表 。一个间隙被事务加了锁,其他事务是不能在这个间隙插入记录的,这样可以防止幻读。
3、事务隔离级别为 串行化 时,读写数据都会 锁住整张表
4、隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大
接下来是代码中要怎样控制的问题了?
对于上面出现的问题,可以使用乐观锁和悲观锁来避免。
– 悲观锁 :悲观锁假定当多个事务同时访问一个资源时,会出现以上问题。因而为了避免这些问题,每个事务在操作一个资源时,都先把资源锁起来,这样就完全排除了当前事务受其他事务的影响,但是使用悲观锁影响并发性能,所以应该谨慎。
– 乐观锁 :乐观锁假定多个并发事务访问一个资源时,靠数据库管理系统自身的锁机制就可以有效地避免这些问题。因而它主要依靠数据库的隔离级别来自动管理锁的工作。一旦出现以上问题,乐观锁会使用版本控制的手段来发现这些问题,并抛出异常,从而有效地避免不良后果的发生。
参考:
MySQL数据库事务各隔离级别加锁情况--read committed && MVCC
MySQL的四种事务隔离级别
https://www.cnblogs.com/huanongying/p/7021555.html
阿里云上的rds 的隔离级别read committed 而不是repeatable-read设置原因的更多相关文章
- 云计算之路-阿里云上:RDS数据库连接数过万引发故障,主备库切换后恢复正常
非常抱歉!今天 12:03-12:52 ,由于数据库连接数异常突增超过1万,达到了阿里云RDS的最大连接数限制,影响了全站的正常访问.由此给您带来麻烦,请您谅解. 在发现数据库连接数突增的问题后,我们 ...
- 云计算之路-阿里云上: RDS实例CPU跑满引发的故障
今天上午 10: 40 左右,我们所使用的阿里云 RDS 实例的 CPU 突然飙高到近 100% ,造成大量数据库查询操作缓慢.超时,在这个恶劣条件下大量 memcached 缓存无法建立,这样的雪上 ...
- 云计算之路-阿里云上:RDS用户的烦恼
http://www.cnblogs.com/cmt/p/3586029.html *博主注:阿里云数据库真的这么可笑?
- 如何将阿里云上的RDS 备份的mysql数据还原到windows环境中
一.本地mysql数据库创建与备份库一致的数据库名,如testdb: 二.本地创建与备份库一致的数据库表,记得设置ALTER TABLE tableName1 ROW_FORMAT = compact ...
- 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库
开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...
- 阿里云重磅发布RDS for SQL Server AlwaysOn集群版
2018年双十一刚过,阿里云数据库发布RDS for SQL Server AlwaysOn集群版,这是业界除微软云SQL Database外,首家云计算公司基于SQL Server最新AlwaysO ...
- 阿里云上部署了zabbix,突然无法收到报警邮件的解决办法
在阿里云上部署了zabbix,一直能正常接收到zbx发来的报警邮件(报警邮箱是163的),不知是什么原因,突然无法接收到报警邮件了. 但在服务器上手动执行echo "hello"| ...
- 在阿里云上进行Docker集群的自动弹性伸缩
摘要: 在刚刚结束的云栖大会上,阿里云容器服务演示了容器的自动弹性伸缩,能够从容应对互联网应用的峰值流量.阿里云容器服务不仅支持容器级别的自动弹性伸缩,也支持集群节点级别的自动弹性伸缩.从而真正做到从 ...
- 在阿里云上遇见更好的Oracle(二)
从上一篇文章的反馈来看,大家还是喜欢八卦多过技术细节,那这一篇继续一些题外话,说说我对“去IOE”的看法. 对同一件事情,参与的没参与的人,讨论起来,都会有各自的立场.所以这里先申明一下,以下内容只是 ...
- 云计算之路-阿里云上:OCS问题的进展以及11:30-11:50遇到的问题
(上图是今天出问题期间Web服务器性能监控图,紫色表示的是Request Execution Time) 昨天我们发布了一篇博客分享了我们这两天遇到的OCS(开放缓存服务)问题,详见云计算之路-阿里云 ...
随机推荐
- 跟运维学 Linux - 01
跟运维学 Linux - 01 运维的诞生 运维工程师有很多叫法:系统运维.Linux 工程师.系统管理员... 网管可以说是运维工程师最早的雏形.在个人电脑未普及时,大家去网吧玩游戏. 玩家:&qu ...
- Java并发工具CountDownLatch的使用和原理
1.等待多线程完成的 CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作. 假如有这样一个需求:我们需要解析一个 Excel 里多个 sheet 的数据 ...
- HTML的总结与回顾(思维导图
- 关于在modelsim中 仿真 ROM IP核 读取不了 mif文件 的解决方法
在modelsim中 仿真 ROM IP核 读取不了 mif文件 . 出现状况: 显示无法打开 rom_8x256.mif 文件 .点开modelsim下面文件的内存列表,可看到内存全为0. 查看自身 ...
- Linux - vim文件编辑器
vim 普通模式下 yy : 复制当前光标所在行 p : 粘贴 数字+yy :复制多行 dd :删除当前行 数字+dd :删除多行 u : 回滚 y$ : 光标到行结尾 y^ : 行开头到光标位置 y ...
- 好用工具:Apipost配置环境变量
配置环境 点击小眼睛可查看环境配置 配置环境url api请求
- 牛客小白月赛65 D题 题解
原题链接 题意描述 一共有两堆石子,第一堆有 \(a\) 个,第二堆有 \(b\) 个,牛牛和牛妹轮流取石子,牛牛先手,每次取石子的时候只能从以下 \(2\) 种方案种挑一种来取(对于选择的方案数必须 ...
- chrome浏览器插件react devtools、redux devtools,无需安装、解压即可用
react devtools用于调试react代码,可以查看到props.state的值,以及定义的hooks,而redux devtools可以追踪到action的派发.store的变化,两个都是r ...
- 部署基于etcd的coredns集群
前言 现需要为公司搭建私有DNS,私有服务器都使用私有DNS的地址,便于访问内部自定义的域名.采用CoreDNS + ETCD方案部署,coredns和etcd都以三实例运行,etcd为集群模式,使用 ...
- TensorRT 模型加密杂谈
在大多数项目交付场景中,经常需要对部署模型进行加密.模型加密一方面可以防止泄密,一方面可以便于模型跟踪管理,防止混淆. 由于博主使用的部署模型多为TensorRT格式,这里以TensorRT模型为例, ...