コスト削減のためのインサイトの活用¶
Snowflakeは、特定のアカウント内でSnowflakeのコストを最適化する機会を特定するコストのインサイトを提供します。インサイトは毎週計算され、リフレッシュされます。
それぞれのインサイトは、Snowflakeを最適化することで削減できるクレジット数またはテラバイト数を示します。
注釈
コストのインサイトを表示するには、ACCOUNTADMINロールを付与する必要があります。
Cost Insights タイルにアクセスするには:
Snowsight にサインインします。
ACCOUNTADMIN ロールに切り替えます。
ナビゲーションメニューで Admin » Cost Management を選択します。
Account Overview タブを選択します。
Cost insights タイルを探します。
以下の各インサイトには、支出を最適化する方法についての提案が含まれています。
- インサイト自動クラスタリングによる使用頻度の低いテーブル
このインサイトでは、このアカウントによるクエリの回数が週に100回未満の 自動クラスタリング を持つテーブルを識別します。
テーブルの自動クラスタリングを有効にすると、そのテーブルに対するクエリのパフォーマンスが大幅に向上します。しかし、テーブルが変更されると、Snowflakeはサーバーレスのコンピューティングクラスターリソースを使用して、テーブルを適切にクラスター化された状態に保つ必要があります。テーブルに対して実行されるクエリの数が少ない場合、発生するコストでパフォーマンス向上を確認できない場合があります。
推奨: これらのテーブルの自動クラスタリングの無効化を検討してください。自動クラスタリングをオフにする前に、そのテーブルが障害復旧のためだけに存在するのか、データ共有によって他のSnowflakeアカウントが使用するために存在するのかを判断してください。
たとえば、
t1
という名前のテーブルの自動クラスタリングを無効にするには、以下のコマンドを実行します。ALTER TABLE t1 SUSPEND RECLUSTER;
- インサイト:めったに使用されないマテリアライズド表示
このインサイトでは、このアカウントが週に10回未満しかクエリしていない マテリアライズドビュー を識別します。
マテリアライズドビューを作成すると、特定のクエリパターンのパフォーマンスが大幅に向上します。しかし、マテリアライズドビューには、新しいデータでマテリアライズドビューを最新に保つことに関連するサーバーレスの計算コストだけでなく、追加のストレージコストが発生します。マテリアライズドビューに対して実行されるクエリの数が少ない場合、発生するコストでパフォーマンス向上を確認できない場合があります。
推奨: マテリアライズドビューの削除または更新の中断を検討してください。マテリアライズドビューを削除する前に、そのテーブルが障害復旧目的のためだけに存在するのか、データ共有を通じて他のSnowflakeアカウントで使用するために存在するのかを判断してください。
例えば、
mv1
という名前のマテリアライズドビューを削除するには、以下のコマンドを実行します。DROP MATERIALIZED VIEW mv1;
- インサイト:めったに使用されない検索最適化パス
このインサイトでは、このアカウントが週に10回未満しか使用していない 検索最適化 アクセスパスを識別します。
検索最適化は、検索アクセスパスを使用して、特定のタイプのポイント検索や分析クエリのパフォーマンスを向上させます。テーブルに検索最適化を追加することで、これらのクエリのパフォーマンスを大幅に向上させることができます。しかし、検索最適化には追加のストレージコストと、そのストレージを最新の状態に保つためのサーバーレスの計算コストが発生します。検索最適化によって作成された検索アクセスパスを使用するクエリの数がわずかである場合、発生するコストでパフォーマンス向上を確認できない場合があります。
推奨: テーブルからの検索最適化の削除。検索最適化を削除する前に、そのテーブルが障害復旧目的のためだけに存在するのか、データ共有を通じて他のSnowflakeアカウントで使用するために存在するのかを判断してください。
例えば、
t1
というテーブルから検索最適化を完全に削除するには、以下のコマンドを実行します。ALTER TABLE t1 DROP SEARCH OPTIMIZATION;
- インサイト:クエリされることのない大規模テーブル
このインサイトでは、このアカウントで先週クエリされていない大規模テーブルを識別します。
推奨: 未使用のテーブルを削除することを検討してみてください。ワークロードに影響を与えることなくストレージコストを削減することができます。テーブルを削除する前に、そのテーブルが障害復旧目的のためだけに存在するのか、データ共有を通じて他のSnowflakeアカウントで使用するために存在するのかを判断してください。
例えば、テーブル名
t1
を削除するには、以下のコマンドを実行します。DROP TABLE t1;
- インサイト: データの書き込みはあるが読み込みがない100 GB以上のテーブル
このインサイトは、このアカウントによってデータが書き込まれるが、読み取られることのないテーブルを識別します。
推奨: データを保存し、Snowflakeに新しいデータをインジェストしても、データが読み込まれないのであれば、無駄かもしれません。ストレージコストを節約するためにこれらのテーブルを削除するか、インジェストで消費されるクレジットを節約するために新しいデータの書き込みを停止することを検討してください。テーブルを削除する前に、そのテーブルが障害復旧目的のためだけに存在するのか、データ共有を通じて他のSnowflakeアカウントで使用するために存在する(読み取られない理由として考えられる)のかを判断してください。
例えば、テーブル名
t1
を削除するには、以下のコマンドを実行します。DROP TABLE t1;
- インサイト:短命な永続テーブル
このインサイトでは、作成後24時間以内に削除された100 GBを超えるテーブルを識別します。
推奨: 短期間だけデータを保持する必要がある場合は、将来のテーブルのために 仮テーブルまたは一時テーブル を使用することを検討してください。仮テーブルや一時テーブルを使用することで、 Fail-safeやTime Travelのコスト を削減できる可能性があります。
例えば、新しい一時テーブル
t1
を作成するには、以下のコマンドを実行します。CREATE TRANSIENT TABLE t1;
- インサイト: マルチクラスターウェアハウスの非効率的使用
このインサイトでは、マルチクラスターウェアハウスで最小クラスター数と最大クラスター数が同じ値にセットされている場合に、ウェアハウスが需要に対応するためにスケールアップまたはスケールダウンできないことを識別します。マルチクラスターウェアハウスが、クレジットの使用状況が少ない期間にスケールダウンできれば、クレジットを節約できます。
推奨事項: 使用が少ない期間にマルチクラスターウェアハウスをスケールダウンできるように、最小クラスター数を引き下げることを検討してください。
たとえば、
wh1
という名前のウェアハウスの最小クラスター数を1にセットするには、次のコマンドを実行します。ALTER WAREHOUSE wh1 SET MIN_CLUSTER_COUNT = 1;