1、特点
-
基于 分布式文件存储 的 NoSQL 数据库
-
面向文档 的存储方式(bson),模式自由,不需要字段定义
-
主从、副本集、分片
-
多键 b+树存储
-
连表查询:聚合查询 Aggregation
-
ACID:MongoDB 支持事务
2、索引与优化
-
单字段索引、复合索引、多键索引、哈希索引、文本索引
-
索引本身是在高速缓存当中,相比磁盘IO操作会有大幅的性能提升
-
索引排序顺序是对结果有影响的
3、慢查询过程
-
开启profile慢查询,找到超过200ms的语句
-
explain分析
-
决定是否需要添加索引
4、explain分析
-
stage: COLLSCAN全表扫描,IXSCAN索引扫描
-
totalKeysExamined :总共查询了多少个 key;totalDocsExamined:总共在磁盘查询了多少个document。两个值越接近效率更高
5、mysql 非聚簇索引和 mongo 的多键索引
-
非聚簇索引主要用于提高查询性能,它允许数据库系统快速定位到数据行。而多键索引主要用于支持包含数组或嵌套文档的字段的查询,它允许数据库系统对数组中的每个元素进行索引。
-
索引条目:非聚簇索引的索引条目是指向数据行的指针和索引字段的值。而多键索引的索引条目是数组元素或嵌套文档本身。
-
索引大小:非聚簇索引的大小通常取决于索引字段的值和指针的大小。而多键索引可能会增加索引的大小,因为对于每个数组元素, MongoDB 都会创建一个索引条目。
6、findAndModify()
可以做乐观锁,进行并发控制
7、4.0开始支持事务
-
开启事务 startTransaction()
-
执行插入、更新或删除操作
-
提交事务 commitTransaction()
-
如果失败可以回滚 abortTransaction()