马士兵mysql笔记
时间: 2025-01-01 20:20:44 浏览: 8
### 关于MySQL的学习笔记
#### MySQL整体架构
MySQL 的整体架构分为多个层次,每一层负责不同的功能。最上层的服务层包含了连接池、解析器、优化器等功能模块;中间的数据字典缓存用于存储表结构信息;底层则是 InnoDB 存储引擎等具体实现部分[^2]。
#### 日志系统与事务特性
日志系统对于保证数据的一致性和可靠性至关重要。通过 Write-Ahead Logging (WAL),即预写式日志技术,在任何更改被应用到实际数据文件之前先记录下这些操作的日志条目。这有助于确保即使发生崩溃也能恢复未完成的事务并保持 ACID 属性中的持久性特征。
#### 两阶段提交机制
为了协调分布式环境下的多资源管理器之间的同步问题,引入了二阶段提交协议(Two-Phase Commit, 2PC)。该过程涉及准备阶段和执行阶段两个步骤,其中所有参与者需同意才能最终确认交易成功与否。这种方式虽然能有效防止丢失更新等问题的发生,但也可能带来性能瓶颈以及潜在的阻塞风险。
#### 多版本并发控制(MVCC)
MVCC 是一种允许读取不加锁的同时还能看到一致视图的技术方案。它利用隐藏列 `DB_TRX_ID` 和 `DB_ROLL_PTR` 来追踪不同时间点上的行版本变化情况,并配合四种隔离级别来处理不同程度的并发访问冲突。特别是在可重复读(Repeatable Read, RR)模式下可以很好地避免脏读现象,但对于幻读仍存在一定局限性。
#### 并发控制策略
数据库支持多种类型的并发控制方法,主要包括乐观锁定(Optimistic Locking)和悲观锁定(Pessimistic Locking)两种方式。前者假设大多数情况下不会出现竞争条件因而无需事先获取独占权限;后者则相反会在每次尝试修改前就立即申请必要的锁以阻止其他进程干扰正常流程。
```sql
SELECT * FROM table_name WHERE id = ? LOCK IN SHARE MODE;
```
上述SQL语句展示了如何使用共享锁来进行简单的悲观锁定操作。
阅读全文