MySQL学习笔记——叶志镔.pdf
### MySQL学习笔记——叶志镔.pdf #### 行锁与并发控制 在MySQL的InnoDB存储引擎中,采用了一种称为“多版本并发控制”(MVCC)的技术,该技术与传统的基于锁的并发控制机制形成对比。MVCC的主要优势在于能够确保读取操作无需加锁,从而使得读写操作不会发生冲突。这一特性对于读多写少的在线交易处理(OLTP)系统尤其重要,因为它极大地提高了系统的并发性能。 **MVCC的特点**:在MVCC并发控制中,读操作可以分为两种类型:快照读和当前读。 - **快照读**:读取的是记录的可见版本(这可能是记录的历史版本),读取时不需要加锁。例如,简单的`SELECT`查询就属于快照读。 - **当前读**:读取的是记录的最新版本,并且当前读返回的所有记录都会自动加上锁,以防止其他事务在此期间修改这些记录。特殊类型的读操作如插入、更新或删除等操作,均属于当前读,需要加锁。 **Update操作的具体流程**:当MySQL接收到带有`WHERE`子句的更新命令时,它会首先根据指定的条件读取第一条匹配的记录,并对该记录加锁(即当前读)。然后,MySQL服务器会接收这条已加锁的记录并进行更新操作。完成一条记录的操作后,继续读取下一条记录直到所有符合条件的记录都被处理完。 #### 聚簇索引 InnoDB存储引擎使用一种被称为“聚簇索引”的数据组织方式。在这种结构中,完整的记录存储在主键索引中,这意味着通过主键索引即可访问到记录的所有列。这种设计简化了数据的查找过程,并提高了查询效率。 #### 两阶段锁 传统的关系型数据库管理系统(RDBMS)使用“两阶段锁”(2PL)技术来管理锁。两阶段锁的基本思想是在事务执行过程中分两个阶段来管理锁的加锁和解锁操作,即加锁阶段和解锁阶段,且这两个阶段不会重叠。这一机制有助于避免死锁等问题的发生。 #### 隔离级别 MySQL/InnoDB支持四种不同的事务隔离级别: 1. **Read Uncommitted**:允许读取未提交的数据,这种隔离级别通常不建议使用,因为它无法解决脏读的问题。 2. **Read Committed (RC)**:对于当前读操作,在RC隔离级别下,系统会对读取到的记录加上记录锁(Record Lock),解决了脏读问题,但仍然存在幻读(Phantom Read)的问题。 3. **Repeatable Read (RR)**:在RR隔离级别下,除了对读取的记录加锁外,还会对读取的范围加上间隙锁(Gap Lock),以防止新插入的记录满足查询条件而造成幻读。 4. **Serializable**:在Serializable隔离级别下,所有读操作均被视为当前读,会加上读锁(S锁),写操作则加上写锁(X锁)。这一级别完全避免了幻读问题,但由于读写操作都会加锁,因此其并发性能较低。 #### Next-Key锁 InnoDB中使用的完整行锁由三个部分组成:记录锁(Record Lock)、间隙锁(Gap Lock)以及Next-Key Lock。其中Next-Key Lock是一种组合了记录锁和间隙锁的锁机制,主要用于解决幻读问题。 #### 实践思考:SQL语句加锁情况 考虑以下两个SQL语句: 1. `SELECT * FROM t1 WHERE id = 10;` 2. `DELETE FROM t1 WHERE id = 10;` 对于第一个SQL语句,如果不加额外的前提条件,一般认为它不加锁,因为InnoDB默认使用MVCC来处理读操作,读取时不加锁。而对于第二个SQL语句,一般情况下会为满足`WHERE`条件的记录加写锁。 然而,是否加锁以及加何种锁,实际上取决于多个因素: - **id列是否为主键**:如果是主键,则会通过主键索引加锁。 - **当前系统的隔离级别**:不同的隔离级别会影响加锁的行为。 - **id列是否有非主键索引**:如果id列有非主键索引,加锁行为可能有所不同。 - **索引是否唯一**:非唯一索引可能导致不同的加锁行为。 - **SQL语句的执行计划**:是通过索引扫描还是全表扫描也会影响加锁的位置和类型。 要准确地判断一条SQL语句是否会加锁以及加何种锁,需要充分了解具体的上下文环境和系统配置。














剩余9页未读,继续阅读


- 粉丝: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 实验室管理系统—C语言.doc
- 系统集成项目管理工程师考试知识点.docx
- 工程项目管理作业必做第二次.doc
- 数据库应用技术作业及答案.doc
- 2023年微机原理与接口技术试新版题库含答案.doc
- 汽配城网络营销策划书.doc
- 五步快速启动网络营销.pptx
- 学习公路工程项目管理的心得体会.docx
- 天英网络营销学院告诉您学习SEO的重要性.pptx
- 《新编计算机应用基础教程》第4章:电子表格Excel-2003的使用课件.ppt
- 基于51单片机的家用温湿度语音播报系统设计.doc
- 计量经济学分析步骤及软件应用概述.pptx
- 可视化流程式开放源代码云计算快速开发平台WorkMake快速入门.pdf
- 基于物联网技术的公交场站安全监管系统.doc
- 电子CAD课程设计报告.docx
- 学习]网络营销服务报价提案.ppt


