.Net转Java.05.为啥MySQL没有nolock
今天忽然想到一个问题,原来为了提高SQL Server性能,公司规定查询语句一般都要加 WITH (NOLOCK)的
现在转Java了,用了MySQL为啥不提这个事情了?
先在MySQL里写了一个查询语句,比样子加了nolock,提示语法不正确,难道是用READUNCOMMITTED? 依然提示语法不正确,
看来MySQL是不支持nolock之类的语法
然后的问题变成了,为什么MySQL不需要支持nolock之类的语法,或者如果MySQL不支持nolock,修改记录导致锁表怎么办?
所以我做了下面的实验
给开了两个MySQL连接,(顺便插一句,因为用的客户端是SQLyog,本以为跟SQL Server Management Studio一样每个“询问”就是一个连接,其实不是,每个连接都要“创建新连接”,我自己测试半天才发现这个问题)
第一个MySQL连接执行查询
START TRANSACTION;
UPDATE testtable SET NAME='newvalue' WHERE id=1
因为事务没有提交,如果是SQLServer的默认情况下,第二个连接再查询同一条记录,肯定会被阻塞的。如果SQLServer查询加了Nolock读取到的是还未commit的脏值“newvalue”
第二个MySQL连接我执行查询
SELECT * FROM `testtable`
我发现既没有发生阻塞,也没有发生脏读,查询到的是老的值,并没有读到未提交的新值newvalue
也就是说MySQL和SQLServer默认维护事务的机制是不同的,
SQLServer 默认情况下一个事务修改了某个值,在这个事务提交前,是阻塞其他连接来读取这个修改中的值的,如果加nolock读取到的是修改后为提交的值(也就是脏读,因为可能这个值最终会回滚)
MySQL 默认情况下,一个事务修改了某个值,在这个事务提交前,不阻塞其他连接来读取这个修改中的值,并且读取到的是修改前的值。
对于互联网公司,绝大多数场景,都不希望写的事务来阻塞读,
所以SQLServer建议加nolock
MySQL本身就不阻塞,nolock也就没有意义了。。
.Net转Java.05.为啥MySQL没有nolock的更多相关文章
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- JSP 实现 之 调用java方法实现MySQL数据库备份和恢复
package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...
- 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...
- 第68节:Java中的MYSQL运用从小白到大牛
第68节:Java中的MYSQL运用从小白到大牛 前言 学习java必备要求,学会运用!!! 常见关系化数据库 BootStrap是轻量级开发响应式页面的框架,全局css组件,js插件.栅格系统是将页 ...
- Java基础86 MySQL数据库基础知识
本文知识点(目录): 1.MySQL数据库的概述 2.MySQL数据库的管理[对数据库的操作](查询.删除.创建数据库,以及查询和修改数据库的编码模式) 3.表的管理[对数据库 表的操作] ...
- Java数据类型与MySql数据类型对照表
这篇文章主要介绍了Java数据类型与MySql数据类型对照表,以表格形式分析了java与mysql对应数据类型,并简单讲述了数据类型的选择与使用方法,需要的朋友可以参考下 本文讲述了Java数据类型与 ...
- JAVA程序对MYSQL数据库加锁实验
什么是脏读,不可重复读,幻读 1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. 2. 不可重 ...
- 演示Java如何调用Mysql的过程和函数
这里只演示Java如何调用Mysql的过程和函数 --------------------------------------------------------------------------- ...
- Java程序向MySql数据库中插入的中文数据变成了问号
找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...
随机推荐
- ionic2+集成第三方sdk时,合并多个清单文件的方法
具体方案android studio官网上已经给出,但需要架梯子,所以这篇文章直接把它搬到墙内,方便查看: 合并多个清单文件 合并优先级 合并冲突启发式算法 合并规则标记 节点标记 属性标记 标记选择 ...
- Python_部分内置函数
内置函数:可以直接调用的函数 all():传入的列表,元组,等等,只要一个为假,就为假(fales)(所有的都为真才为真) # None, {}:空字典, []:空列表, 0:零,():空集合,“”: ...
- 修改tomcat的默认访问日志信息
修改前:
- 空间数据可视化:1. 3D_Bar图表| 空间柱状图
1.Sublime的使用 中文版的配置 https://jingyan.baidu.com/article/ca2d939d1e83feeb6c31cefc.html (百度经验) sublime里边 ...
- 空间分析工具:GIS
1.数据空间 数据空间是指用来表示空间实体的的位置.几何特征及其属性特征的数据. 位置:经纬度.地址.相对位置: 几何特征:点.线.面.形状: 属性特征:面积.周长.人口.经济等属性. POI数据.O ...
- Sublime Text3配置Lua运行环境
Sublime Text3配置Lua运行环境 前言 要问现在哪个编译器最能扛得住潮流,要数Sublime Text3了,由于它的轻量,插件丰富,美观,造就了一大批粉丝(本菜鸡也是哦) 在以前的工作中使 ...
- HDU 1811 Rank of Tetris 【拓扑排序】+【并查集】
<题目链接> 题目大意: 给你N个点(编号从0到N-1)和M个关系,要你判断这个图的所有点的顺序是否可以全部确定.不过对于任意点的关系可能存在A>B或A<B或A=B三种情况,如 ...
- Django之Form组件(一)
Django之Form组件(一) Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 基本操作:字 ...
- Oracle Loop
1. LOOP - END LOOP - EXIT declare v_rlt ):; begin v_rlt:; loop dbms_output.put_line('loop'||v_rlt); ...
- Alpha(2/10)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...