- カテゴリ:
システム関数 (システム情報)
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS¶
テーブルの 自動クラスタリング を有効にすることに関連する推定コストを返します。この機能は以下で使用されます。
初めてテーブルをクラスタリングする場合のコストを推定する。
テーブルのクラスタキーを変更するコストを推定する。
可能であれば、指定されたキーを中心にクラスタ化された後のテーブルの維持に関連するコストを推定する。将来のメンテナンスコストを推定するために、 DML の履歴が必要になることもあります。
重要
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 関数によって返されるコストの推定はベストエフォートです。実際の実現コストは、推定コストとは最大で100%(またはまれに数倍)異なる場合があります。
構文¶
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS( '<table_name>' ,
[ '( <expr1> [ , <expr2> ... ] )' ] )
引数¶
- '
table_name
' クラスタリングの推定コストを返したいテーブルの名前。
- '
(expr1 [ , expr2 ... ])
' テーブルの提案されたクラスターキーは、各式がテーブルの列に解決される場所です。この関数は、これらの列をクラスタキーとして使用してテーブルをクラスタリングするコストを推定します。
列名または式が1つだけ渡される場合でも、括弧内に含める必要があります。
クラスタリングキーのないテーブルでは、この引数は必須です。引数が省略された場合はエラーが返されます。
クラスタリングキーを持つテーブルでは、この引数はオプションです。引数が省略された場合、この関数はテーブルの現在のクラスタリングキーを使用してテーブルをクラスタリングするコストを推定します。
戻り値¶
VARCHAR 型の値。返される文字列は JSON 形式で、次の名前と値のペアが含まれています。
warning
条件がコストの推定精度やクラスターキーを選択するインパクトに影響を与える可能性があるかどうかを示します。
reportTime
関数の出力が生成された日付。
clusteringKey
クラスターキーを構成する列。
initial
指定されたクラスターキーを中心にテーブルをクラスタリングする予測コストを説明します。一旦クラスタ化されたテーブルを維持するための推定コストは含まれていません。
initial
JSON オブジェクトには以下の名前と値のペアが含まれています。unit
初期コストを表す単位を示します。
value
テーブルをクラスター化するためのコストを示し、
unit
で表されます。comment
クラスタリングの初期コストを解釈します。
maintenance
最初にクラスター化された後、うまくクラスター化されたテーブルを維持するための予測コストを説明します。この予測は、テーブルが変更されると再クラスター化されるため、最近の DML アクティビティに基づいています。
空のオブジェクトは、テーブルまたはクラスターキー列のいずれかが新しいことを示しています。つまり、メンテナンスコストを推定するには、関数は DML 操作に関するさらに多くの過去のデータを必要とします。
unit
コストを表す単位を示します。
value
初期クラスタリング後にテーブルを維持するためにかかるコストを示し、1日あたりの
units
で表されます。comment
コスト発生期間と推定の根拠となる期間を含みます。
アクセス制御の要件¶
コストを推定するのに必要な権限は、テーブルを読んだりクラスターキーを変更したりするのに必要な権限と同じです。以下の権限が必要です。
テーブルに対する SELECT と INSERT 権限、またはテーブルに対する OWNERSHIP 権限。
親スキーマおよびデータベースに対する USAGE または OWNERSHIP 権限。
使用上の注意¶
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 関数によって返されるコストの推定は、テーブルからマイクロパーティションのサブセットをサンプリングし、クラスタリングの実行時間をキャプチャすることに基づいています。サンプリングされた特定のマイクロパーティションとシステム速度によって、コストの推定は関数の実行ごとに異なる可能性があります。
最高の精度を得るためには、 SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS を複数回実行し、結果を平均化できます。この関数はサンプルのクラスタリングジョブを使用し、その実行時間を収集します。提供されるコストの推定は、システム速度によって変動する可能性があります。この関数を複数回実行し、その結果を平均化することで、より正確なコストの推定が可能になります。
メンテナンスコストの推定が不正確である最も一般的な理由は、推定に基づいた過去の DML パターンが、将来の DML パターンと一致しなかったことです。
例¶
テーブル myTable
のクラスタキーとして列 tenantId
を定義することに関連する見積もられたコストを返します。
SELECT SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS('myTable', '(tenantId)');
{
"reportTime": "Fri, 12 Jul 2024 01:06:18 GMT",
"clusteringKey": "LINEAR(tenantId)",
"initial": {
"unit": "Credits",
"value": 98.197987412,
"comment": "Total upper bound of one time cost"
},
"maintenance": {
"unit": "Credits",
"value": 10.0,
"comment": "Daily maintenance cost estimate provided based on DML history from the
past seven days."
}
}