カテゴリ:

システム関数 (システム情報)

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS

テーブルの 自動クラスタリング を有効にすることに関連する推定コストを返します。この機能は以下で使用されます。

  • 初めてテーブルをクラスタリングする場合のコストを推定する。

  • テーブルのクラスタキーを変更するコストを推定する。

  • 可能であれば、指定されたキーを中心にクラスタ化された後のテーブルの維持に関連するコストを推定する。将来のメンテナンスコストを推定するために、 DML の履歴が必要になることもあります。

重要

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 関数によって返されるコストの推定はベストエフォートです。実際の実現コストは、推定コストとは最大で100%(またはまれに数倍)異なる場合があります。

構文

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS( '<table_name>' ,
 [ '( <expr1> [ , <expr2> ... ] )' ] )
Copy

引数

'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)');
Copy
{
  "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."
  }
}