AnalyticDB for PostgreSQL支援資源隊列(Resource Queue)和資源群組(Resource Group)兩種資源管理方式對資料庫資源進行管理,為不同類別的業務查詢之間提供資源隔離,從而確保資源得到充分而合理的利用,保證不同服務需求之間的獨立性。本文介紹如何通過資源隊列和資源群組這兩種資源管理方式對AnalyticDB for PostgreSQL資料庫的CPU、記憶體、磁碟落盤等資源進行管理。
資源隊列管理
資源隊列基於輕量級鎖等技術實現,支援對AnalyticDB for PostgreSQL資料庫的並發查詢數、查詢使用的記憶體、查詢的CPU優先順序等資源類別進行管理。具體使用方式,請參見使用Resource Queue(資源隊列)進行負載管理。
資源群組管理
資源群組基於共用記憶體、cgroup等技術實現,支援對AnalyticDB for PostgreSQL資料庫的並發查詢數、查詢使用的記憶體、查詢的CPU使用率、磁碟落盤閾值等資源類別進行管理,支援通過控制台操作。具體使用方式,請參見使用Resource Group(資源群組)進行負載管理。
查詢資源管理方式
您可以執行SQL查詢當前AnalyticDB for PostgreSQL執行個體所使用的資源管理方式,具體代碼如下:
SHOW gp_resource_manager;執行結果:
group:使用資源群組的資源管理方式。
queue:使用資源隊列的資源管理方式。
選擇資源管理方式
您可以根據業務情況,選擇合適的資源管理方式。資源隊列與資源群組的區別如下:
業務 | 資源隊列 | 資源群組 |
管控項 | CPU、記憶體、最佳化器 | CPU、記憶體、最佳化器 落盤、最小管控最佳化器代價 |
使用功能方式 | 基於使用者組 | 基於使用者組 |
並發管理 | 基於鎖,容易產生死結 | 基於共用記憶體,不會產生死結 |
CPU管理 | 基於優先順序,模糊管理 | 基於cgroup,精確管理 |
記憶體管理 | 支援 | 支援 |
管控層級 | 查詢層級 | 事務層級 |
以下列舉了不同業務情境選擇的資源管理方式:
採用資源隊列的管理方式。
不關注細粒度資源管理,希望僅僅通過CPU優先順序對幾類業務進行簡單的資源配置,不在乎資源隊列引發的死結問題,可以在業務中進行重試。
採用資源群組的管理方式。
希望盡量避免資源隊列偶發死結帶來的業務重試需要,希望完全消除資源隊列導致的死結問題。
希望通過控制台管理資源配置,不希望通過SQL的方式進行資源管理。
有細粒度、精確地進行資源管理的需求,比如對幾類不同的業務分別限制CPU上限或者CPU時間片分配比例,在同業務之間達到比較好的資源隔離效果。