mysql隔离级别与锁,接口并发响应速度的关系(2)
innoDB默认隔离级别
mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
两个事务同时更新一条数据
右图第二个事务的update增加行锁(表中id有索引), 在未提交之前,左图第一个事务update操作会进入阻塞状态, 左图中仍然可以进行select

右图第二个事务提交之后, 第一个事务会执行update并返回结果,但是还没有提交, 此时右图的查询结果是第二个事务提交的值

然后左图第一个事务也提交, 会覆盖右图第二个事务的值。左图操作的是右图变更前的数据,这个在并发时是不正常的

更新数据库的隔离级别为序列化
开启两个事务, 右图进行update操作, 左图事务的select操作会进入阻塞操作

右图提交之后, 左图事务select返回右图提交之后的结果

此时左图再update commit, 会覆盖右图的结果。左图操作的是右图变更后的数据, 这个在并发时是正常的.
总结:
可重复读时,有幻读的问题, 使用行写锁
序列化时, select会阻塞,并发性能极低 == 没有并发, 使用行读锁
使用索引select update时,会在行上加锁(具体哪种锁,读,写?),
不能使用索引时在表上加锁, 表锁也会极大的影响并发性能
索引可以提高并发的原因:1.sql查询的数据量小,sql响应快 2.行锁,提高并发,不影响其他线程
TODO:: 分布式最终一致性,为什么可以不使用事务?
mysql隔离级别与锁,接口并发响应速度的关系(2)的更多相关文章
- mysql 隔离级别与锁
1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...
- mysql隔离级别与锁,接口并发响应速度的关系(1)
默认隔离级别:可重复读 原始数据 | id | name | addr | | nick | NULL | 事务1 事务2 start transaction start transaction ; ...
- Mysql隔离级别,锁与MVCC
关键词:事务,ACID,隔离级别,MVCC,共享锁,排它锁 阅读本文前请先阅读http://hedengcheng.com/?p=771 http://www.hollischuang.com/arc ...
- MYSQL隔离级别 与 锁
1.四种隔离级别下数据不一致的情况 脏读 不可重复读 幻读 RU 是 是 是 RC(快照读) 否 是 是 RC(当前读) 否 否 是 RR(快照读) 否 否 是 RR(当前读) 否 否 否 Ser ...
- MySQL数据库引擎、事务隔离级别、锁
MySQL数据库引擎.事务隔离级别.锁 数据库引擎InnoDB和MyISAM有什么区别 大体区别为: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能 ...
- 重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系
重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系 Innodb中的事务隔离级别和锁的关系 前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁 ...
- MySQL事务隔离级别,锁(转)
add by zhj: 本文针对的是MySQL的InnoDB存储引擎,不适用于MySQL的其它存储引擎和其它数据库 原文:MySQL数据库事务隔离级别(Transaction Isolation Le ...
- 详解Mysql事务隔离级别与锁机制
一.概述 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写. 胀读和不可重复读.幻读这些问题. 这些问题的本质都是数据库的多事务并 ...
- Mysql数据库事务的隔离级别和锁的实现原理分析
Mysql数据库事务的隔离级别和锁的实现原理分析 找到大神了:http://blog.csdn.net/tangkund3218/article/details/51753243 InnoDB使用MV ...
随机推荐
- 洛谷【P1358】扑克牌
我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html 题目传送门:https://www.luogu.org/problemnew/show/P ...
- 问题5:如何快速找到多个字典中的公共键(key)
方法一:for in循环 from random import randint, sample a1 = {k; randint(1, 4) for k in 'abcdefg'} a2 = {k; ...
- JavaScript原型模式(prototype)
1.原型是一个对象,其他对象可以通过它实现属性的继承所有对象在默认的情况下都有一个原型,因为原型的本身也是对象,所以一个类的真正原型是被类的内部[prototype]属性所指出.每个函数都有一个属性叫 ...
- Linux下UDP发送大量请求导致Operation not permitted的问题探讨
一.问题背景目前公司准备上微服务的架构模式,在对比大量的API网关之后,最后选中了Kong作为我们的API网关,在经过大量的研究之后,啊呸,踩坑之后,终于跑起来了,简直是普天同庆,撒花祝贺. 但是在美 ...
- Java探索之旅(3)——选择与循环
1.选择结构与输出 ❶Switch语句: Switch表达式必须算出 char,byte,short,int类型数值之一,总是括号括住:Value1----ValueN,对应有相同数据类型且为常量或者 ...
- 《精通Spring4.X企业应用开发实战》读后感第五章(基于注解的配置)
- 关于C/C++中的“auto”关键字
C/C++ 98标准 C++03标准 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期.此用法是多余的,因为即使定义变量时不加" ...
- CodeForces 492E Vanya and Field (思维题)
E. Vanya and Field time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- ubuntu中解决/usr/bin/ld: cannot find -lxxx
解决/usr/bin/ld: cannot find -lxxx 在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息:/usr/bin/ld: cannot fin ...
- 我的笔记文档版本控制系统-MediaWiki-目录悬浮+隐藏
13年11份把北京的工作辞了,出去从北到南找同学玩了二十多天,因为各种原因,回家(宁夏)找工作,想找一个Linux相关的工作,但涉及Linux的都是运维.支持一类,最后因为各种原因找了个做java的本 ...