システムテーブルとビューのリファレンス - Amazon Redshift

システムテーブルとビューのリファレンス

システムテーブルとビュー

Amazon Redshift には、システムの動作に関する情報を含む多くのシステムテーブルとビューがあります。これらのシステムテーブルとビューには、その他のデータベーステーブルと同じ方法でクエリを実行できます。このセクションでは、いくつかのサンプルシステムテーブルクエリを示し、以下について説明します。

  • 異なるタイプのシステムテーブルとビューが生成される方法

  • これらのテーブルから取得できる情報のタイプ

  • Amazon Redshift システムテーブルをカタログテーブルに結合する方法

  • システムテーブルのログファイルの増大を管理する方法

一部のシステムテーブルは、診断目的のため AWS スタッフのみが使用できます。以下のセクションでは、システム管理者またはその他のデータベースユーザーが有益な情報を取得するためにクエリを実行できるシステムテーブルについて説明します。

注記

システムテーブルは自動または手動クラスターバックアップ(スナップショット)には含まれません。STL システムビューは 7 日間のログ履歴を保持します。ログの保持にお客様によるアクションは不要ですが、ログデータを 7 日間以上保持する場合は、ログを定期的に他のテーブルにコピーするか、Amazon S3 にアンロードする必要があります。

システムテーブルとビューのタイプ

システムテーブルとビューには、以下の複数の種類があります。

  • SVV ビューには、一時的な STV テーブルへの参照を含むデータベースオブジェクトに関する情報が含まれます。

  • SYS ビューは、プロビジョニングされたクラスターとサーバーレスワークグループのクエリとワークロードの使用状況をモニタリングするために使用します。

  • STL ビューは、システムの履歴を提供するためにディスクに保持されたログから生成されます。

  • STV テーブルとは、現在のシステムデータのスナップショットを含む仮想システムテーブルです これらのテーブルは一時的なメモリ内データに基づいていて、ディスクベースのログまたは通常のテーブルには保持されません。

  • SVCS ビューは、メインクラスターおよび同時実行スケーリングクラスターの両方のクエリに関する詳細を提供します。

  • SVL ビューは、メインクラスターのクエリに関する詳細を表示します。

システムテーブルとビューは、通常のテーブルと同じ整合性モデルを使用しません。システムテーブルとビュー (特に STV テーブルと SVV ビュー) にクエリを実行するときは、これについて注意するのことが重要です。たとえば、通常の t1 テーブルと c1 列がある場合、次のクエリが行を返さないことが予測されます。

select * from t1 where c1 > (select max(c1) from t1)

ただし、システムテーブルに対する次のクエリは、行を返す場合があります。

select * from stv_exec_state where currenttime > (select max(currenttime) from stv_exec_state)

このクエリが行を返すことがある理由は、currenttime が一時的で、クエリの 2 つの参照が評価時に同じ値を返さない可能性があるためです。

一方、次のクエリは行を返さないと予想されます。

select * from stv_exec_state where currenttime = (select max(currenttime) from stv_exec_state)

システムテーブルとビューのデータの可視性

システムテーブルとビューには、データについて 2 つのクラスの可視性 (ユーザーが表示可能、スーパーユーザーが表示可能) があります。

スーパーユーザー特権を持っているユーザーのみが、スーパーユーザーが表示可能なカテゴリのテーブルのデータを表示できます。通常のユーザーは、ユーザーが表示可能なテーブルのデータを表示できます。スーパーユーザーが表示できるテーブルに通常のユーザーがアクセスできるようにするには、テーブルに対する SELECT 権限を通常のユーザーに付与します。詳細については、「GRANT」を参照してください。

デフォルトでは、ユーザーが表示可能なテーブルの大部分で、別のユーザーによって生成された行は、通常のユーザーには表示されません。通常のユーザーに SYSLOG ACCESS UNRESTRICTED を付与すると、ユーザーが表示できるテーブルのすべての行 (別のユーザーが生成した行を含む) を表示できます。詳細については、「ALTER USER」または「「ユーザーの作成」」を参照してください。SVV_TRANSACTIONS のすべての行は、すべてのユーザーが表示可能です。データの可視性の詳細については、AWS re:Post ナレッジベースの記事「Amazon Redshift データベースの通常のユーザーに、自分のクラスターの他のユーザーからのシステムテーブルのデータを見る許可を与えるにはどうすればよいですか?」を参照してください。

メタデータビューの場合、Amazon Redshift は SYSLOG ACCESS UNRESTRICTED が許可されているユーザーには表示を許可しません。

注記

システムテーブルに対する無制限のアクセス権限を付与されたユーザーは、別のユーザーが生成したデータへの可視性が提供されます。たとえば、STL_QUERY と STL_QUERY_TEXT には INSERT、UPDATE、および DELETE ステートメントのフルテキストが含まれており、ユーザーが生成した機密データがこれらに含まれている可能性があります。

スーパーユーザーは、すべてのテーブルのすべての行を表示できます。通常のユーザーに、スーパーユーザーが表示可能なテーブルのアクセス権を付与するには、そのテーブルに対する SELECT 権限の GRANT を、通常のユーザーに対して実行します。

システム生成クエリのフィルタ処理

通常、SVL_QUERY_SUMMARY、SVL_QLOG など、クエリに関連するシステムテーブルとビューには、Amazon Redshift がデータベースのステータスを監視するために使用する、自動的に生成された多数のステートメントが含まれます。これらのシステム生成クエリはスーパーユーザーに表示されますが、ほとんど役立ちません。userid 列を使用するシステムテーブルまたはシステムビューからの選択時にそれらのクエリを除外するには、条件 userid > 1 を WHERE 句に追加します。次に例を示します。

select * from svl_query_summary where userid > 1