

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# STL\_SCAN
<a name="r_STL_SCAN"></a>

テーブルをスキャンするステップをクエリについて分析します。スキャンは 1 つのセグメント内で最初のステップなので、このテーブルに含まれる行のステップ番号は常に 0 です。

STL\_SCAN はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「[システムテーブルとビューのデータの可視性](cm_chap_system-tables.md#c_visibility-of-data)」を参照してください。

**注記**  
STL\_SCAN には、メインのプロビジョニング済みクラスターで実行されるクエリのみが含まれます。同時実行スケーリングクラスターやサーバーレス名前空間で実行されるクエリは含まれていません。メインクラスターと、同時実行スケーリングクラスターやサーバーレス名前空間の両方で実行されるクエリの説明プランにアクセスするには、SYS モニタリングビュー [SYS\_QUERY\_DETAIL](SYS_QUERY_DETAIL.md) を使用することをお勧めします。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。

## テーブルの列
<a name="r_STL_SCAN-table-columns"></a>


| 列名  | データ型  | 説明  | 
| --- | --- | --- | 
| userid | integer | エントリを生成したユーザーの ID。 | 
| query | integer | クエリ ID。クエリ列は、他の各種システムテーブルおよびビューを結合するために使用できます。 | 
| slice | integer | クエリが実行されていたスライスを識別する番号。 | 
| segment | integer | クエリセグメントを識別する番号。 | 
| step | integer | 実行されたクエリステップ。 | 
| starttime | timestamp | UTC で表されたクエリの開始時間。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358。 | 
| endtime | timestamp | クエリの実行が完了した時刻 (UTC)。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358。 | 
| tasknum | integer | ステップ実行に割り当てられたクエリタスク処理の数。 | 
| rows | bigint | 処理された合計行数。 | 
| バイト | bigint | ステップのすべての出力行のサイズ (バイト単位)。 | 
| fetches | bigint | この情報は、内部使用に限定されています。 | 
| type | integer | スキャンタイプの ID。有効な値のリストについては、次の表を参照してください。 | 
| tbl | integer | テーブル ID。 | 
| is\_rrscan | character(1) | true (t) の場合は、ステップで範囲限定スキャンが使用されたことを示します。 | 
| is\_delayed\_scan | character(1) | この情報は、内部使用に限定されています。 | 
| rows\_pre\_filter | bigint | 永続テーブルのスキャンの場合は、削除対象としてマークされた行 (非実体の行) をフィルタリングする前でユーザー定義のクエリフィルタが適用される前に出力された合計行数。 | 
| rows\_pre\_user\_filter | bigint | 永続テーブルのスキャンの場合は、削除対象としてマークされた行 (非実体の行) をフィルタリングした後でユーザー定義のクエリフィルタが適用される前に処理された行数。 | 
| perm\_table\_name | character(136) | 永続テーブルのスキャンの場合は、スキャンされたテーブルの名前。 | 
| is\_rlf\_scan | character(1) | true (t) の場合は、ステップで低レベルフィルタリングが使用されたことを示します。 | 
| is\_rlf\_scan\_reason | integer | この情報は、内部使用に限定されています。 | 
| num\_em\_blocks | integer | この情報は、内部使用に限定されています。 | 
| checksum | bigint | この情報は、内部使用に限定されています。 | 
| runtime\_filtering | character(1) | true(t) の場合、ランタイムフィルタが適用されていることを示します。 | 
| scan\_region | integer | この情報は、内部使用に限定されています。 | 
| num\_sortkey\_as\_predicate | integer | この情報は、内部使用に限定されています。 | 
| row\_fetcher\_state | integer | この情報は、内部使用に限定されています。 | 
| consumed\_scan\_ranges | bigint | この情報は、内部使用に限定されています。 | 
| work\_stealing\_reason | bigint | この情報は、内部使用に限定されています。 | 
| is\_vectorized\_scan | character(1) | この情報は、内部使用に限定されています。 | 
|  is\_vectorized\_scan\_reason | integer | この情報は、内部使用に限定されています。 | 
| row\_fetcher\_reason | bigint | この情報は、内部使用に限定されています。 | 
| topology\_signature | bigint | この情報は、内部使用に限定されています。 | 
| use\_tpm\_partition | character(1) | この情報は、内部使用に限定されています。 | 
| is\_rrscan\_expr | character(1) | この情報は、内部使用に限定されています。 | 
| scanned\_mega\_value | character(1) | この情報は、内部使用に限定されています。この情報は、特定のスキャンステップで大きな値をスキャンしたかどうかを示します。大きな値は複数のブロックに格納されます。ブロックサイズはデフォルトで 1 MB で、大きな値とは、デフォルト設定で 1 MB より大きい値です。 | 

## スキャンタイプ
<a name="r_STL_SCAN-scan-types"></a>


| タイプ ID | Description | 
| --- | --- | 
| 1 | ネットワークからのデータ。 | 
| 2 | 圧縮された共有メモリ内のパーマネントユーザーテーブル。 | 
| 3 | 行が認識される一時テーブル。 | 
| 21 | Amazon S3 からファイルをロードします。 | 
| 22 | Amazon DynamoDB からテーブルをロードします。 | 
| 23 | リモート SSH 接続からのロードデータ。 | 
| 24 | リモートクラスター (ソート済みリージョン) からのロードデータ。これは、サイズを変更するために使用されます。 | 
| 25 | リモートクラスター (未ソートリージョン) からのロードデータ。これは、サイズを変更するために使用されます。 | 
| 28 | 複数のテーブルの UNION ALL を使用して時系列ビューからデータを読み取ります。 | 
| 29 |  Amazon S3 外部テーブルからデータを読み取ります。 | 
| 30 | Amazon S3 外部テーブルのパーティション情報を読み取ります。 | 
| 33 | リモート Postgres テーブルからデータを読み取ります。 | 
| 36 | リモート MySQL テーブルからデータを読み取ります。 | 
| 37 | リモート Kinesis ストリームからデータを読み取ります。 | 

## 使用に関する注意事項
<a name="w2aac59c29b9d101c15"></a>

`rows` が `rows_pre_filter` と相対的に近いことが理想的です。`rows` と `rows_pre_filter` の間に大きな差異がある場合は、後で破棄される行を実行エンジンがスキャンしていることが考えられ、非効率です。`rows_pre_filter` と `rows_pre_user_filter` の差異は、スキャンに含まれる非実体行の数に相当します。削除対象としてマークされた行を削除するには、VACUUM を実行します。`rows` と `rows_pre_user_filter` の差異は、クエリによってフィルタリングされる行の数に相当します。多数の行がユーザーフィルタによって破棄される場合は、ソート列の選択を見直すか、未ソートリージョンが大きいことが原因である場合は、バキュームを実行します。

## サンプルクエリ
<a name="r_STL_SCAN-sample-queries"></a>

次の例は、バキュームされていない行 (非実体行) がテーブルによって削除されたため、`rows_pre_filter` が `rows_pre_user_filter` よりも大きいことを示しています。

```
SELECT query, slice, segment,step,rows, rows_pre_filter, rows_pre_user_filter 
from stl_scan where query = pg_last_query_id();

 query |  slice | segment | step | rows  | rows_pre_filter | rows_pre_user_filter
-------+--------+---------+------+-------+-----------------+----------------------
 42915 |      0 |       0 |    0 | 43159 |           86318 |                43159
 42915 |      0 |       1 |    0 |     1 |               0 |                    0
 42915 |      1 |       0 |    0 | 43091 |           86182 |                43091
 42915 |      1 |       1 |    0 |     1 |               0 |                    0
 42915 |      2 |       0 |    0 | 42778 |           85556 |                42778
 42915 |      2 |       1 |    0 |     1 |               0 |                    0
 42915 |      3 |       0 |    0 | 43428 |           86856 |                43428
 42915 |      3 |       1 |    0 |     1 |               0 |                    0
 42915 |  10000 |       2 |    0 |     4 |               0 |                    0
(9 rows)
```