简创网站建设费用,做数学题赚钱的网站,松山湖做网站,网站建设福州公司文章目录 1、MVCC基本概念1.1、当前读1.1.1、创建表 stu1.1.2、测试 1.2、快照读 1、MVCC基本概念 全称Multi-Version Concurrency Control#xff0c;多版本并发控制。指维护一个数据的多个版本#xff0c;使得读写操作没有冲突#xff0c;快照读为MySQL实现MVCC提供了一个… 文章目录 1、MVCC基本概念1.1、当前读1.1.1、创建表 stu1.1.2、测试 1.2、快照读 1、MVCC基本概念 全称Multi-Version Concurrency Control多版本并发控制。指维护一个数据的多个版本使得读写操作没有冲突快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现还需要依赖于数据库记录中的三个隐式字段、undo log日志、readView。 1.1、当前读 读取的是记录的最新版本读取时还要保证其他并发事务不能修改当前记录会对读取的记录进行加锁。对于我们日常的操作如select…lock in share mode共享锁select…for update、update、insert、delete排他锁都是一种当前读。 1.1.1、创建表 stu
mysql DROP TABLE IF EXISTS stu;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql CREATE TABLE stu (- id int NOT NULL AUTO_INCREMENT,- age int NOT NULL,- name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - PRIMARY KEY (id) USING BTREE,- INDEX idx_t_age(age) USING BTREE- ) ENGINE InnoDB CHARACTER SET utf8mb4;
Query OK, 0 rows affected (0.37 sec)mysql INSERT INTO stu VALUES (1, 1, tom);
Query OK, 1 row affected (0.01 sec)mysql INSERT INTO stu VALUES (3, 3, cat);
Query OK, 1 row affected (0.00 sec)mysql INSERT INTO stu VALUES (8, 8, rose);
Query OK, 1 row affected (0.00 sec)mysql INSERT INTO stu VALUES (11, 11, jetty);
Query OK, 1 row affected (0.01 sec)mysql INSERT INTO stu VALUES (19, 19, lily);
Query OK, 1 row affected (0.00 sec)mysql INSERT INTO stu VALUES (25, 25, luci);
Query OK, 1 row affected (0.00 sec)mysql
mysql SET FOREIGN_KEY_CHECKS 1;
Query OK, 0 rows affected (0.00 sec)mysql 1.1.2、测试 select * from stu lock in share mode;在测试中我们可以看到即使是在默认的RR隔离级别下事务A中依然可以读取到事务B最新提交的内容因为在查询语句后面加上了 lock in share mode 共享锁此时是当前读操作。当然当我们加排他锁的时候也是当前读操作。 1.2、快照读
简单的select不加锁就是快照读快照读读取的是记录数据的可见版本有可能是历史数据不加锁是非阻塞读。 Read Committed每次select都生成一个快照读Repeatable Read开启事务后第一个select语句才是快照读的地方Serializable快照读会退化为当前读