
mysql
文章平均质量分 91
爪哇_克劳德_武汉
于无声处响惊雷
展开
-
MySQL(五)一致性非锁定读与一致性锁定读
一致性非锁定读 一致性非锁定读是什么?这里我先给出一个最最最简单的解释:一致性非锁定读就是读快照! 快照即当前行数据之前的历史版本,每行记录可能存在多个历史版本,或者说每行记录可能有不止一个快照数据,一般我们将这种技术称为 行多版本技术。而由于一个行记录可能对应着多个快照(历史版本),为此不可避免地会带来一系列的并发问题,如何解决这些并发问题,就是所谓的 多版本并发控制(MVCC)。 在不同事务隔离级别下,读取的方式不同。只有在事务隔离级别 READ COMMITTED 和 REPEATABLE READ(原创 2021-10-13 10:52:38 · 256 阅读 · 0 评论 -
MySQL(四)多版本并发控制 ----- MVCC
前言 InnoDB 存储引擎在事务隔离级别 READ COMMITTED 和 REPEATABLE READ(默认)下会开启一致性非锁定读,简单回顾下:所谓一致性非锁定读就是每行记录可能存在多个历史版本,多版本之间串联起来形成了一条版本链,这样不同时刻启动的事务可以无锁地访问到不同版本的数据。 undo log 版本链 一致性非锁定读是通过 MVCC(Multi Version Concurrency Control,多版本并发控制) 来实现的。事实上,MVCC 没有一个统一的实现标准,所以各个存储引擎的实原创 2021-10-13 10:17:01 · 185 阅读 · 0 评论 -
MySQL(三)锁 ----- 行锁和锁机制
InnoDB 锁机制 InnoDB存储引擎支持行级锁 其大类可以细分为共享锁和排它锁两类 共享锁(S):允许拥有共享锁的事务读取该行数据。当一个事务拥有一行的共享锁时,另外的事务可以在同一行数据也获得共享锁,但另外的事务无法获得同一行数据上的排他锁 排它锁(X):允许拥有排它锁的事务修改或删除该行数据。 当一个事务拥有一行的排他锁时,另外的事务在此行数据上无法获得共享锁和排它锁,只能等待第一个事务的锁释放 除了共享锁和排他锁之外, InnoDB也支持意图锁。该锁类型是属于表级锁,表明事务在后期会原创 2021-10-12 14:44:24 · 215 阅读 · 0 评论 -
MySQL(二)锁 ----- 表锁
前言 MySQL 里面的锁大致可以分成全局锁,表级锁,行锁 这儿将讲一下表级锁 表级锁 MySQL 里面表级别的锁有两种: 表锁, 元数据锁(meta data lock,MDL)。 表锁 lock tables 表名 read; #该表可以读,不能ddl 和 dml 中增删改,只能读取表数据 lock tables 表名 write; #既不能读,也不能写 表锁的语法是 lock tables … read/write。 与 FTWRL 类似,可以用 unlock tables 主动释放锁,也可原创 2021-10-12 14:00:37 · 1766 阅读 · 0 评论 -
MySQL(一)锁 ----- 全局锁
前言 MySQL 里面的锁大致可以分成全局锁,表级锁,行锁 这儿将讲一下全局锁 全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是Flush tables with read lock (FTWRL)。 当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。 全局锁使用场景 全局锁的典型使用场景是,做全库逻辑备份(mysqldump)。重新做主从时候原创 2021-10-12 10:02:34 · 735 阅读 · 0 评论