MongoDB
本节带你快速入门MongoDB,无需过多技术基础,45分钟掌握核心操作。涵盖概念、部署、常用命令及实战练习,适合初学者上手学习。
覆盖索引
覆盖索引指索引包含查询所需的所有字段值。InnoDB中,辅助索引叶子节点存储主键与索引列值,通常需回表查询。若查询字段均被索引覆盖,则无需回表,直接返回结果,提升查询性能。
为什么索引的数量不能太多
创建和维护索引需耗费时间,数据增删改时需动态更新索引,影响性能;索引占用物理空间,聚簇索引因数据存于叶子节点,空间消耗更大,且随数据量增长而增加。
创建索引的注意事项
索引字段应非空、较小且常被查询,离散度大的字段优先。唯一、不为空的列适合建索引,但频繁更新的表索引不宜超过3个,以提升查询效率并减少维护开销。
数据库的行级锁与表锁
表锁无死锁,但并发低,读写互斥;行锁基于索引,支持高并发,但可能死锁。若SQL未走索引,行锁失效转为表锁。行锁适用于避免不可重复读,事务中增删改自动加排他锁,且不可锁定同一索引。
MySQL引擎InnoDB和MyISAM的区别
InnoDB是MySQL默认事务引擎,支持行锁、外键和MVCC,通过聚簇索引提升查询性能,适合高并发、事务场景。MyISAM不支持事务和行锁,但查询快、存储紧凑,适用于读多写少、无需事务的场景。两者在锁机制、索引结构和崩溃恢复等方面差异显著。
聚簇索引与非聚簇索引(辅助)的区别
聚簇索引按主键排序,叶子节点存储主键值和完整数据行,一张表仅能有一个;非聚簇索引叶子节点存主键或指针,可创建多个,支持覆盖索引且不影响聚簇索引结构。
InnoDB为什么使用自增id作为主键
MySQL以16KB数据页存储数据。主键自增时,写满后直接使用新页;若主键非自增,为保持索引有序,插入需定位到合适位置,易引发页分裂,导致数据频繁迁移,降低插入性能。
MongoDB的特点
MongoDB是一款高性能、高可用、高扩展的NoSQL数据库,支持嵌入式数据模型与多种存储引擎,提供索引优化、自动故障转移、分片扩展及丰富查询功能,适用于海量数据存储与O2O等多样化应用场景。
第四章 数据库
本章系统讲解MySQL数据库核心知识,涵盖char与varchar区别、事务ACID特性及隔离级别、索引结构(B+树)、聚簇索引与二级索引、回表查询、索引创建与失效场景,并结合explain执行计划分析慢SQL及优化策略。