一、 索引及其优化
- 索引的概述
- 数据库的索引好比是一本书前面的目录,能加快数据查询的速度。
- 适当的地方增加索引,不合理的地方删除次优索引,能优化性能较差的应用。
- 索引的操作
- 基础索引:db.ken.ensureIndex({age:1}) //在列age上创建索引
1 Name为_id_的是系统索引,不能删除。
- 静默方式创建索引:db.ken.ensureIndex({x:1},{background:true}); //后台创建
- 文档索引:嵌入式文档用不上索引
- 组合索引:多个条件一起
- 唯一索引:声明唯一性,就是不能插入此条件相同的数据
- 强制使用索引:hint({_id:1})
- 删除索引:db.ken.dropIndex()
- 重建索引:db.ken.reIndex()
- 用explain查看计划的执行方式
1 Millis字段可以看到耗时情况,indexBound可以看到是否在用索引,n表示返回的文档数量,nscaned表示扫描的文档数量。
2 如果信息不全,可以尝试用其他版本的客户端。
- 优化器:Profiler
- 开启功能。
1 可通过启动的时候加参数:-profiler=1
2 执行命令:db.setProfilingLevel(1)
- 查询记录:db.system.profiler.find()
- 性能优化概述
- 性能优化原则:一次修改一个参数
- 影响性能的参数:操作系统、网络、硬件、应用服务器、应用程序、数据库、查询语句
- 常用优化方案
- 创建缩索引:写少读多的时候
- 限定返回条数:limit
- 查询只用到的字段
- 采用Capped Colletion
- 采用存储过程
- 强制使用索引
- 使用Profiler
二、 性能监控
- Mongosniff工具
- Mongostat工具
- 使用db.serverStatus()
- 使用db.stats()
- http监控接口
时间: 2024-10-29 19:07:17