這是mongodb裡面學習的關於性能的知識點,資料庫的管理無非就是維護和優化。維護在於平時的功能維護,其中優化就包括慢查詢和性能提高了。本次文章裡面提到從索引建立到監控,比較全面的闡述了在mongodb的優化中需要的過程。希望對自己日後的工作提供方便查閱,也希望對大家有用。 ...
一、 索引及其優化
- 索引的概述
- 資料庫的索引好比是一本書前面的目錄,能加快數據查詢的速度。
- 適當的地方增加索引,不合理的地方刪除次優索引,能優化性能較差的應用。
- 索引的操作
- 基礎索引: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監控介面