MongoDB教育訓練-06
mongoDB 使用B-tree索引
查詢至少要用到索引,不要full table scan(所以要至少建立可用索引)
檢查執行計畫快取 -> (無) 有可能優化的索引找出來,同時跑看誰的效率快,加入快取
更新快取時機:
- 當前索引變慢(系統判斷)
- 當新的索引被創建
- server 重啟(memory 清除)
- 需要指定欄位
- 欄位可以是任何類型
Explain 執行計畫
- queryPlanner : 只顯示執行計畫
- executionStats(最常用): 會把最優執行計畫執行一遍,並收集相關資訊
- allPlansExecution:把所有執行計畫執行一遍,並收集相關資訊
- nReturn: 返回數量
- totalKeyExamined :找到索引
- totalDocExamined : 查找document數量
- stage:COLLSAN => 無index
- totalKeyExamined / nReturn 最好小於1000
number_of_reviews: 1 (1: 升冪,-1:降冪)
通過index 取得資訊:FETCH
- nReturn:totalKeyExamined:totalDocExamined 1:1:1 最佳情況
取得所有索引
刪除索引
需要放得下index的記憶體(最低要求)
db.tablename.stats(檔案除以?(1024 => KB,102481024 => MB)).indexSizes
- storageSize : 物理檔案大小
- 刪除資料不會減少資料庫大小,只是把硬碟位置空出來,重複使用
- 釋放空間:compact https://docs.mongodb.com/manual/reference/command/compact/