叢集讀效能優化
CrazyZard發表於2020-03-08
- Elasticsearch != 關係型資料庫
- 儘可能 Denormalize 資料,從而獲取最佳的效能
- 使用 Nested 型別的資料。查詢速度會慢幾倍
- 使用 Parent / Child 關係。查詢速度會慢幾百倍
- 儘量將資料先行計算,然後儲存到 Elasticsearch 中。儘量避免查詢時的 Script 計算
- 儘量使用 Filter Context,利用快取機制,減少不必要的算分
- 結合 profile,explain API 分析慢查詢的問題,持續優化資料模型
- 可以在 Index 文件時,使用 Ingest Pipeline,計算並寫入某個欄位
- 聚合查詢會消耗記憶體,特別是針對很大的資料集進行聚合運算
- 當需要使用不同的 Query Scope,可以使用 Filter Bucket
- 避免 Over Sharing
- 一個查詢需要訪問每一個分片,分片過多,會導致不必要的查詢開銷
- 結合應用場景,控制單個分片的尺寸
- Force-merge Read-only 索引
- 使用基於時間序列的索引,將只讀的索引進行 force merge,減少 segment 數
- 影響查詢效能的一些因素
- 資料模型和索引配置是否優化
- 資料規模是否過大,通過 Filter 減少不必要的資料計算
- 查詢語句是否優化
本作品採用《CC 協議》,轉載必須註明作者和本文連結