标签: MySQL
MySQL 事务与锁机制
并发场景下,事务与锁共同保证了数据的一致性。InnoDB 通过 MVCC 与锁的协同,在性能与隔离性之间取得平衡。 ACID 与隔离级别 事务的 ACID 由不同机制保障:原子性靠 undo log,持久性靠 redo log,隔离性靠 MVCC 与锁,一致性是最终目标。 SQL 标准定义四种隔离级别,InnoDB 默认 REPEATABLE READ: READ UNCOMMITTED:可能脏读 READ COMMITTED:避免脏读,可能不可重复读 REPEATABLE READ:避免不可重 …
并发场景下,事务与锁共同保证了数据的一致性。InnoDB 通过 MVCC 与锁的协同,在性能与隔离性之间取得平衡。 ACID 与隔离级别 事务的 ACID 由不同机制保障:原子性靠 undo log,持久性靠 redo log,隔离性靠 MVCC 与锁,一致性是最终目标。 SQL 标准定义四种隔离级别,InnoDB 默认 REPEATABLE READ: READ UNCOMMITTED:可能脏读 READ COMMITTED:避免脏读,可能不可重复读 REPEATABLE READ:避免不可重 …
MySQL 索引原理与最佳实践
索引是 MySQL 查询性能的决定性因素。理解 InnoDB 的 B+Tree 索引结构,才能写出真正命中索引的 SQL。 B+Tree 与聚簇索引 InnoDB 使用 B+Tree 组织索引,其特点是非叶子节点只存索引键用于导航,所有数据都落在叶子节点,且叶子节点通过双向链表串联,非常适合范围扫描。 InnoDB 的主键索引是聚簇索引,叶子节点直接存放整行数据;二级索引的叶子节点存放「索引键 + 主键值」。因此通过二级索引查询非索引列时,需要再用主键回表查聚簇索引。 回表与覆盖索引 当查询的列 …
索引是 MySQL 查询性能的决定性因素。理解 InnoDB 的 B+Tree 索引结构,才能写出真正命中索引的 SQL。 B+Tree 与聚簇索引 InnoDB 使用 B+Tree 组织索引,其特点是非叶子节点只存索引键用于导航,所有数据都落在叶子节点,且叶子节点通过双向链表串联,非常适合范围扫描。 InnoDB 的主键索引是聚簇索引,叶子节点直接存放整行数据;二级索引的叶子节点存放「索引键 + 主键值」。因此通过二级索引查询非索引列时,需要再用主键回表查聚簇索引。 回表与覆盖索引 当查询的列 …