首先创建一张只有两行的表。

    1. CREATE TABLE `t` (
    2. `id` int(11) NOT NULL,
    3. `k` int(11) DEFAULT NULL,
    4. PRIMARY KEY (`id`)
    5. ) ENGINE=InnoDB;
    6. insert into t(id, k) values(1,1),(2,2);
    然后按照下面的顺序执行语句,<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/875760/1655390359974-27f99aa2-7a9f-4ed5-808a-d0c53a338205.png#clientId=u2c20c690-cc67-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=297&id=ud7815519&margin=%5Bobject%20Object%5D&name=image.png&originHeight=371&originWidth=671&originalType=binary&ratio=1&rotation=0&showTitle=false&size=34373&status=done&style=none&taskId=u60967307-7b92-452d-8a05-874815e3659&title=&width=536.8)<br />在可重复读隔离级别下,Innodb存储引擎是在什么时候创建一致性视图的?取决于开启事务使用的是什么语句,如果使用的是start/begin transcation语句开启的事务,那么在执行增删改查或者是改变表结构的语句的时候才会创建一致性视图,如果使用的是start/begin transcation with consistent snapshot语句开启的事务,那么在执行这个开启事务语句时就创建了一致性视图。<br />那么按照这个顺序执行语句,事务A和事务B会查询到什么数值呢?<br />事务A查询到的k值是1,事务B查询到的k值是3,为什么会是这样呢?