AnalyticDB for PostgreSQL は、データベースリソースを管理するためにリソースキューとリソースグループをサポートします。これらの方法により、異なるタイプのクエリに対してリソース分離を実現し、効率的なリソース使用と異なるサービスの独立性を確保します。このトピックでは、リソースキューとリソースグループを使用して、AnalyticDB for PostgreSQL データベースの CPU、メモリ、ディスクスピルなどのリソースを管理する方法について説明します。
リソースキュー管理
リソースキューは、軽量ロックなどのテクノロジーに基づいて実装されており、同時実行クエリの数、クエリが使用するメモリ、クエリの CPU 優先度など、AnalyticDB for PostgreSQL データベースのリソースを管理するために使用されます。 詳細については、「リソースキューを使用してワークロードを管理する」をご参照ください。
リソースグループ管理
リソースグループは、共有メモリや cgroup などのテクノロジーに基づいて実装されており、AnalyticDB for PostgreSQL データベースの同時実行クエリ数、クエリが使用するメモリ、クエリの CPU 使用率、ディスクスピルのしきい値などのリソースを管理するために使用されます。コンソールからリソースグループを管理できます。詳細については、「リソースグループを使用してワークロードを管理する」をご参照ください。
リソース管理方法の確認
次の SQL ステートメントを実行すると、現在の AnalyticDB for PostgreSQL インスタンスで使用されているリソース管理方法を確認できます。
SHOW gp_resource_manager;
結果:
-
group:リソースグループ方式が使用されています。
-
queue:リソースキュー方式が使用されています。
リソース管理方法の選択
ビジネス要件に基づいてリソース管理方法を選択してください。次の表では、リソースキューとリソースグループを比較しています。
|
項目 |
リソースキュー |
リソースグループ |
|
制御項目 |
CPU、メモリ、オプティマイザ |
CPU、メモリ、オプティマイザ ディスクスピル、オプティマイザの最小コスト |
|
使用方法 |
ユーザーグループに基づく |
ユーザーグループに基づく |
|
同時実行管理 |
ロックに基づく。デッドロックが発生しやすい。 |
共有メモリに基づく。デッドロックは発生しない。 |
|
CPU 管理 |
優先度に基づく。精度の低い管理。 |
cgroup に基づく。精度の高い管理。 |
|
メモリ管理 |
サポート |
サポート |
|
制御レベル |
クエリレベル |
トランザクションレベル |
以下のリストで、各リソース管理方法を選択すべき状況を説明します。
-
リソースキューを使用する場合
きめ細かいリソース管理が不要で、CPU 優先度に基づくシンプルなリソース設定が適しており、操作を再試行することでデッドロックに対処できる場合は、この方法を選択してください。
-
リソースグループを使用する場合
-
デッドロックを排除し、操作の再試行を回避したい場合。
-
SQL ステートメントではなく、コンソールでリソース設定を管理したい場合。
-
きめ細かいリソース管理を実行したい場合。たとえば、最大 CPU 使用率を制限したり、各サービスに CPU タイムスライスの比率を割り当てたりして、効果的なリソース分離を実現できます。
-