一致性读的概念consistent read

mysql 的读操作是快照读,也就是说,在读操作执行的时候是某一个时刻的数据内容,不管其他的事务在做什么,原始数据会依据undo log 进行重新组织。一致性读是用来避免其他事务引起的锁等待问题。
       一致性读能够看到 某一时刻提交的事务做出的更改,看不到之后或者uncommitted的事务。但是有一个例外,就是事务本身中进行的statements导致的的changes是能够被本身所看见的,(这一点不管是RC 还是RR 下都是这样)可以自己动手试一下。
       如果隔离级别是RR(REPEATABLE READ)所有的读操作的结果只能是第一次在事务中执行的那样,也就是说,不管你执行几次read操作,始终是和第一次一样的,也就是所说的可重复读。
       一致性读是innodb RC 和RR 下默认Select语句的模式,一致性读不会给table加锁,因此其他事务能够同时进行这些table的修改。
       假设你正在RR的隔离级别下,你执行了一条Select语句,InnoDB会根据你查询的那一个时刻进行query。如果另一个事务在这个时间点之后,删除了一个row并且commit了,你不会看到这个行被删除了,插入和删除也是类似的。

# 建表语句
create table demo1
(id    int auto_increment primary key,name  varchar(20),phone varchar(11)
) engine = innodb;#看一眼隔离级别
show variables like '%isolation';
transaction_isolation,REPEATABLE-READsession1                            session2
start transaction;               start transaction ;
select * from demo1;(0行输出)  insert into demo1 values (1,'xx','1111');select * from demo1; #输出(1,xx,1111)也就是说能够看到自己所做的changes。
select * from demo1;(0输出)commit;
select * from demo1;(0输出)
delete from demo1 where id = 1;(影响到一行)#说明另一个事务提交之后,虽然select不到,但是能够删除这一行的!*****精华处在这
commit;

DDL DML DCL

  • DDL,Data definition language,一系列的SQL语句用来操作数据库本身的而不是单个的table。包括CREATE, ALTER, and DROP statements。Also includes the TRUNCATE statement, because it works differently than a DELETE FROM table_name statement, even though the ultimate effect is similar.DDL语句自动提交当前的事务,它们不能够被回滚。
  • DCL 数据库控制语言,用来管理权限的,比如GRANT和REVOKE;
  • DML 数据库操作语言,执行insert,update,delete操作。Select 有的时候也被当做是DML语句,因为Select…for update 也会像insert 一样会加锁。DML语句在事务的context中执行,所以它们的影响能够被提交挥着回滚。

consistent read和DDL的关系

一致性读并不会在DDL语句中起作用。

  • 一致读不会在DROP TABLE中起作用,因为MYSQL不会使用一个已经被DROP掉的table,InnoDB 破坏了这个table
  • 一致性读也不会在ALTER TABLE的操作中起作用,会出现下面的错误。ER_TABLE_DEF_CHANGED, “Table definition has changed, please retry transaction”.

consistent read一致性读,DDL DML DCL相关推荐

  1. DDL, DML, DCL, 和TCL的含义

    DDL, DML, DCL, 和TCL是什么? 在一些公司中提交给测试团队的SQL脚本会划分为DDL.DML等,但这些概念到底是如何定义的呢?SQL(Structure Query Language) ...

  2. SQL四种语言:DDL,DML,DCL,TCL

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  3. 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL

    今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL – Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREAT ...

  4. DDL DML DCL

    2019独角兽企业重金招聘Python工程师标准>>> DDL is Data Definition Language statements. Some examples:数据定义语 ...

  5. ddl dml dcl

    DCL数据控制语言 创建临时表空间 create temporary tablespace user_temp tempfile 'E:/oracle/product/10.1.0/oradata/o ...

  6. DDL/DML/DCL/TCL基本概念

    2019独角兽企业重金招聘Python工程师标准>>> 1. 数据定义语言DDL DDL((Data Definition Language),用于定义/修改/删除数据对象(如表)的 ...

  7. SQL 四大功能DDL/DML/DCL/TCL

    SQL主要分成四部分: (1)数据定义.(SQL DDL)用于定义SQL模式.基本表.视图和索引的创建和撤消操作. (2)数据操纵.(SQL DML)数据操纵分成数据查询和数据更新两类.数据更新又分成 ...

  8. MySQL数据库应用(DDL/DML/DCL)

    一.DDL(Data Definition Language)数据定义语言: 适用范围:对数据库中的某些对象 创建数据库  :CREATE DATABASE  1.创建表: CREATETABLE [ ...

  9. DDL,DML,DCL

    一.DDL(data definition language)数据定义语言 数据定义语言用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建.删除.修改等操作.基本的DDL命令及功能如下: 命 ...

最新文章

  1. 某程序员误把7500枚比特币当垃圾扔掉,价值约2.4亿美元!
  2. iis6.0解析漏洞
  3. pythontcp服务器框架_tcp服务器框架python
  4. MySQL学习(二)复制
  5. selenium自动化-单元测试框架
  6. dbc数据库 与 mysql_使用反应式关系数据库连接规范R2DBC操作MySQL数据库
  7. Android中使用WebView加载本地html并支持运行JS代码和支持缩放
  8. C指针原理(39)-GLIB
  9. Linux从零开始(一、安装系统)
  10. 计算机网络(四)网络层
  11. python语言学完后学什么_学完Python语言可以做什么?发展前景怎么样?
  12. python中cursor操作数据库(转)
  13. 无论是cisco还是华三的书上对于子网划分有个问题需要解释
  14. 第10章 bit_vector位向量容器
  15. 阿里安全的“自动逆向机器人”TimePlayer 究竟是什么
  16. WiFi曝出安全漏洞几近“裸奔”:运营商能借机收割一波红利吗?
  17. Sublime Text 2删除行尾空格
  18. 在程序员眼里,马云 1000 亿的大业败给了王者荣耀 100 个月工资的奖金
  19. ======第三章处理机调度与死锁======
  20. HDOJ_1016 素数环

热门文章

  1. 如何删除CSDN上自己上传的资源方法汇总(第一种方法神操作,亲测有效)
  2. ASP.NET程序员常用的85个工具
  3. 搭建K8S dashboard
  4. anaconda的kite_Anaconda3详细图文安装教程(附安装包) | 我爱分享网
  5. Vue - 拖曳式可视化生成应用软件(适合迭代的基础架构、低代码平台)
  6. 虚拟主机商如何搭建下一代虚拟主机
  7. getMonth()函数的问题
  8. 基于LightGBM分类实现英雄联盟数据预测(一)
  9. PTA《数据结构与算法题目集(中文)》函数题第二题
  10. 997. 找到小镇的法官_小镇...