

 Amazon Redshift tidak akan lagi mendukung pembuatan UDF Python baru mulai Patch 198. UDF Python yang ada akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# SYS\_QUERY\_HISTORY
<a name="SYS_QUERY_HISTORY"></a>

Gunakan SYS\_QUERY\_HISTORY untuk melihat detail kueri pengguna. Setiap baris mewakili kueri pengguna dengan akumulasi statistik untuk beberapa bidang. Tampilan ini berisi banyak jenis kueri, seperti bahasa definisi data (DDL), bahasa manipulasi data (DHTML), salin, bongkar muat, dan Amazon Redshift Spectrum. Ini berisi kueri yang berjalan dan selesai.

SYS\_QUERY\_HISTORY dapat dilihat oleh semua pengguna. Pengguna super dapat melihat semua baris; pengguna biasa hanya dapat melihat data mereka sendiri. Untuk informasi selengkapnya, lihat [Visibilitas data dalam tabel dan tampilan sistem](cm_chap_system-tables.md#c_visibility-of-data).

**catatan**  
Untuk memverifikasi apakah transaksi yang berisi kueri yang dieksekusi berhasil dilakukan, Anda perlu melakukan operasi gabungan antara tabel sistem dan `sys_transaction_history` tabel. Contoh:  

```
SELECT 
    qh.transaction_id,
    qh.query_id,
    qh.status AS query_status,
    qh.query_type,
    TRIM(qh.query_text) AS query_text,
    th.status AS transaction_status
FROM 
    sys_query_history qh
LEFT JOIN 
    sys_transaction_history th ON qh.transaction_id = th.transaction_id;
```

## Kolom tabel
<a name="SYS_QUERY_HISTORY-table-columns"></a>


| Nama kolom  | Jenis data  | Deskripsi  | 
| --- | --- | --- | 
| user\_id | integer | Pengidentifikasi pengguna yang mengirimkan kueri. | 
| query\_id | bigint | Pengidentifikasi kueri. | 
| query\_label | karakter (320) | Nama singkat untuk query. | 
| transaction\_id | bigint | Pengidentifikasi transaksi. | 
| session\_id | integer | Proses identifier dari proses yang menjalankan query. | 
| database\_name | karakter (128) | Nama database yang terhubung dengan pengguna saat kueri dikeluarkan. | 
| query\_type | karakter (32) | Jenis query, seperti, SELECT, INSERT, UPDATE, UNLOAD, COPY, COMMAND, DDL, UTILITY, CTAS, dan LAINNYA. | 
| status | karakter (10) | Status kueri. Nilai yang valid: perencanaan, antrian, menjalankan, mengembalikan, gagal, dibatalkan, dan sukses. | 
| result\_cache\_hit | Boolean | Menunjukkan apakah kueri cocok dengan cache hasil. | 
| start\_time | timestamp | Waktu ketika kueri dimulai. | 
| waktu\_akhir | timestamp | Waktu ketika query selesai. | 
| berlalu\_waktu | bigint | Jumlah total waktu (mikrodetik) yang dihabiskan untuk kueri. | 
| antrian\_waktu | bigint | Total waktu (mikrodetik) yang dihabiskan untuk antrian kueri kelas layanan. | 
| eksekusi\_waktu | bigint | Total waktu (mikrodetik) berjalan di kelas layanan. | 
| error\_message | karakter (512) | Alasan kueri gagal. | 
| returned\_rows | bigint | Jumlah baris dikembalikan ke klien.  | 
| kembali\_bytes | bigint | Jumlah byte dikembalikan ke klien.  | 
| query\_text | karakter (4000) | String kueri. String ini mungkin terpotong.  | 
| redshift\_version | karakter (256) | Versi Amazon Redshift saat kueri dijalankan. | 
| penggunaan\_limit | karakter (150) | Daftar ID batas penggunaan yang dicapai oleh kueri. | 
| compute\_type | varchar(32) | Menunjukkan apakah kueri berjalan di cluster utama atau cluster penskalaan konkurensi. Nilai yang mungkin adalah primary (kueri berjalan pada cluster utama), secondary (kueri berjalan pada cluster sekunder), atau primary-scale (kueri berjalan pada cluster konkurensi). Ini hanya berlaku untuk klaster yang disediakan. | 
| compile\_time | bigint | Total waktu (mikrodetik) yang dihabiskan untuk kompilasi kueri. | 
| perencanaan\_waktu | bigint | Total waktu (mikrodetik) yang dihabiskan untuk perencanaan kueri. | 
| lock\_wait\_time | bigint | Total waktu (mikrodetik) yang dihabiskan untuk menunggu kunci relasi. | 
| service\_class\_id | integer | ID kelas layanan. Untuk daftar ID kelas layanan, buka[ID kelas layanan WLM](cm-c-wlm-system-tables-and-views.md#wlm-service-class-ids).<br />Kolom ini hanya digunakan untuk kueri yang dijalankan pada kluster yang disediakan. Untuk kueri yang dijalankan di Redshift Serverless, kolom ini berisi -1. | 
| service\_class\_name | karakter (64) | Nama kelas layanan.<br />Kolom ini hanya digunakan untuk kueri yang dijalankan pada kluster yang disediakan. Untuk kueri yang dijalankan di Amazon Redshift Redshift Serverless, kolom ini kosong. | 
| query\_priority | karakter (20) | Prioritas antrian di mana kueri dijalankan. Kemungkinan nilainya adalah sebagai berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/redshift/latest/dg/SYS_QUERY_HISTORY.html)<br />NULL berarti prioritas kueri tidak didukung untuk kueri.<br />Kolom ini hanya digunakan untuk kueri yang dijalankan pada kluster yang disediakan. Untuk kueri yang dijalankan di Redshift Serverless, kolom ini kosong. | 
| short\_query\_accelerated | karakter (10) | Apakah kueri dipercepat menggunakan akselerasi kueri pendek (SQA). Kemungkinan nilainya adalah sebagai berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/redshift/latest/dg/SYS_QUERY_HISTORY.html)<br />Kolom ini hanya digunakan untuk kueri yang dijalankan pada kluster yang disediakan. Untuk kueri yang dijalankan di Redshift Serverless, kolom ini kosong. | 
| user\_query\_hash | karakter (40) | Query hash yang dihasilkan dari query, termasuk query literal. Kueri berulang dengan teks kueri yang sama akan memiliki nilai user\_query\_hash yang sama. | 
| generic\_query\_hash | karakter (40) | Hash kueri yang dihasilkan dari kueri, tidak termasuk literal kuerinya. Kueri berulang dengan teks kueri yang sama, tetapi literal kueri yang berbeda, akan memiliki nilai generic\_query\_hash yang sama. | 
| query\_hash\_version | integer | Nomor versi untuk hash kueri yang dihasilkan dari kueri. | 
| result\_cache\_query\_id | integer | Jika kueri menggunakan hasil caching, nilai bidang ini adalah ID kueri dari kueri yang merupakan sumber hasil cache. Jika hasil caching tidak digunakan, nilai bidang ini adalah`0`. | 
| nama pengguna | karakter (128) | Nama pengguna pengguna yang mengirimkan kueri. | 

## Kueri Sampel
<a name="SYS_QUERY_HISTORY-sample-queries"></a>

Query berikut mengembalikan query berjalan dan antrian.

```
SELECT user_id,
       query_id,
       transaction_id,
       session_id,
       status,
       trim(database_name) AS database_name,
       start_time,
       end_time,
       result_cache_hit,
       elapsed_time,
       queue_time,
       execution_time
FROM sys_query_history
WHERE status IN ('running','queued')
ORDER BY start_time;
```

Keluaran sampel.

```
 user_id | query_id | transaction_id | session_id | status  | database_name |        start_time         |          end_time          | result_cache_hit | elapsed_time | queue_time | execution_time
---------+----------+----------------+------------+---------+---------------+---------------------------+----------------------------+------------------+--------------+------------+----------------
     101 |   760705 |         852337 | 1073832321 | running | tpcds_1t      | 2022-02-15 19:03:19.67849 | 2022-02-15 19:03:19.739811 | f                |        61321 |          0 |              0
```

Kueri berikut mengembalikan waktu mulai kueri, waktu akhir, waktu antrian, waktu berlalu, waktu perencanaan, dan metadata lainnya untuk kueri tertentu.

```
SELECT user_id,
       query_id,
       transaction_id,
       session_id,
       status,
       trim(database_name) AS database_name,
       start_time,
       end_time,
       result_cache_hit,
       elapsed_time,
       queue_time,
       execution_time,
       planning_time,
       trim(query_text) as query_text
FROM sys_query_history
WHERE query_id = 3093;
```

Keluaran sampel.

```
user_id | query_id | transaction_id | session_id |   status   | database_name |         start_time         |          end_time          | result_cache_hit | elapsed_time | queue_time | execution_time | planning_time | query_text
--------+----------+----------------+------------+------------+---------------+----------------------------+----------------------------+------------------+--------------+------------+----------------+---------------+-------------------------------------
    106 |     3093 |          11759 | 1073750146 | success    | dev           | 2023-03-16 16:53:17.840214 | 2023-03-16 16:53:18.106588 | f                |       266374 |          0 |         105725 |        136589 | select count(*) from item;
```

Kueri berikut mencantumkan 10 kueri SELECT terbaru.

```
SELECT query_id,
       transaction_id,
       session_id,
       start_time,
       elapsed_time,
       queue_time,
       execution_time,
       returned_rows,
       returned_bytes
FROM sys_query_history
WHERE query_type = 'SELECT'
ORDER BY start_time DESC limit 10;
```

Keluaran sampel.

```
 query_id | transaction_id | session_id |         start_time         | elapsed_time | queue_time | execution_time | returned_rows | returned_bytes
----------+----------------+------------+----------------------------+--------------+------------+----------------+---------------+----------------
   526532 |          61093 | 1073840313 | 2022-02-09 04:43:24.149603 |       520571 |          0 |         481293 |             1 |           3794
   526520 |          60850 | 1073840313 | 2022-02-09 04:38:27.24875  |       635957 |          0 |         596601 |             1 |           3679
   526508 |          60803 | 1073840313 | 2022-02-09 04:37:51.118835 |       563882 |          0 |         503135 |             5 |          17216
   526505 |          60763 | 1073840313 | 2022-02-09 04:36:48.636224 |       649337 |          0 |         589823 |             1 |            652
   526478 |          60730 | 1073840313 | 2022-02-09 04:36:11.741471 |     14611321 |          0 |       14544058 |             0 |              0
   526467 |          60636 | 1073840313 | 2022-02-09 04:34:11.91463  |     16711367 |          0 |       16633767 |             1 |            575
   511617 |         617946 | 1074009948 | 2022-01-20 06:21:54.44481  |      9937090 |          0 |        9899271 |           100 |          12500
   511603 |         617941 | 1074259415 | 2022-01-20 06:21:45.71744  |      8065081 |          0 |        7582500 |           100 |           8889
   511595 |         617935 | 1074128320 | 2022-01-20 06:21:44.030876 |      1051270 |          0 |        1014879 |             1 |             72
   511584 |         617931 | 1074030019 | 2022-01-20 06:21:42.764088 |       609033 |          0 |         485887 |           100 |           8438
```

 Kueri berikut menunjukkan jumlah kueri pilihan harian dan waktu kueri rata-rata yang telah berlalu. 

```
SELECT date_trunc('day',start_time) AS exec_day,
       status,
       COUNT(*) AS query_cnt,
       AVG(datediff (microsecond,start_time,end_time)) AS elapsed_avg
FROM sys_query_history
WHERE query_type = 'SELECT'
AND start_time >= '2022-01-14'
AND start_time <= '2022-01-18'
GROUP BY exec_day,
         status
ORDER BY exec_day,
         status;
```

Keluaran sampel.

```
      exec_day       | status  | query_cnt | elapsed_avg
---------------------+---------+-----------+------------
 2022-01-14 00:00:00 | success |      5253 |  56608048
 2022-01-15 00:00:00 | success |      7004 |  56995017
 2022-01-16 00:00:00 | success |      5253 |  57016363
 2022-01-17 00:00:00 | success |      5309 |  55236784
 2022-01-18 00:00:00 | success |      8092 |  54355124
```

Kueri berikut menunjukkan kinerja waktu berlalu kueri harian.

```
SELECT distinct date_trunc('day',start_time) AS exec_day,
       query_count.cnt AS query_count,
       Percentile_cont(0.5) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P50_runtime,
       Percentile_cont(0.8) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P80_runtime,
       Percentile_cont(0.9) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P90_runtime,
       Percentile_cont(0.99) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P99_runtime,
       Percentile_cont(1.0) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS max_runtime
FROM sys_query_history
LEFT JOIN (SELECT  date_trunc('day',start_time) AS day, count(*) cnt
           FROM sys_query_history
           WHERE query_type = 'SELECT'
           GROUP by 1) query_count
ON date_trunc('day',start_time) = query_count.day
WHERE query_type = 'SELECT'
ORDER BY exec_day;
```

Keluaran sampel.

```
      exec_day       | query_count | p50_runtime | p80_runtime | p90_runtime | p99_runtime  | max_runtime
---------------------+-------------+-------------+-------------+-------------+--------------+--------------
 2022-01-14 00:00:00 |        5253 |  16816922.0 |  69525096.0 | 158524917.8 | 486322477.52 | 1582078873.0
 2022-01-15 00:00:00 |        7004 |  15896130.5 |  71058707.0 | 164314568.9 | 500331542.07 | 1696344792.0
 2022-01-16 00:00:00 |        5253 |  15750451.0 |  72037082.2 | 159513733.4 | 480372059.24 | 1594793766.0
 2022-01-17 00:00:00 |        5309 |  15394513.0 |  68881393.2 | 160254700.0 | 493372245.84 | 1521758640.0
 2022-01-18 00:00:00 |        8092 |  15575286.5 |  68485955.4 | 154559572.5 | 463552685.39 | 1542783444.0
 2022-01-19 00:00:00 |        5860 |  16648747.0 |  72470482.6 | 166485138.2 | 492038228.67 | 1693483241.0
 2022-01-20 00:00:00 |        1751 |  15422072.0 |  69686381.0 | 162315385.0 | 497066615.00 | 1439319739.0
 2022-02-09 00:00:00 |          13 |   6382812.0 |  17616161.6 |  21197988.4 |  23021343.84 |   23168439.0
```

Kueri berikut menunjukkan distribusi jenis query.

```
SELECT query_type,
       COUNT(*) AS query_count
FROM sys_query_history
GROUP BY query_type
ORDER BY query_count DESC;
```

Keluaran sampel.

```
 query_type | query_count
------------+-------------
 UTILITY    |      134486
 SELECT     |       38537
 DDL        |        4832
 OTHER      |         768
 LOAD       |         768
 CTAS       |         748
 COMMAND    |          92
```

Contoh berikut menunjukkan perbedaan dalam hasil query hash antara beberapa query. Amati kueri berikut:

```
CREATE TABLE test_table (col1 INT);

INSERT INTO test_table VALUES (1),(2);

SELECT * FROM test_table;

SELECT * FROM test_table;

SELECT col1 FROM test_table;

SELECT * FROM test_table WHERE col1=1;

SELECT * FROM test_table WHERE col1=2;

SELECT query_id, TRIM(user_query_hash) AS user_query_hash, TRIM(generic_query_hash) AS generic_query_hash, TRIM(query_text) AS text FROM sys_query_history ORDER BY start_time
DESC LIMIT 10;
```

Berikut ini adalah contoh output:

```
query_id | user_query_hash | generic_query_hash | text
---------+-----------------+--------------------+----------
24723049 | oPuFtjEPLTs=    | oPuFtjEPLTs=       | select query_id, trim(user_query_hash) as user_query_hash, trim(generic_query_hash) as generic_query_hash, query_hash_version, trim(query_text) as text from sys_query_history order by start_time\r\ndesc limit 20
24723045 | Gw2Kwdd8m2I=    | IwfRu8/XAKI=       | select * from test_table where col1=2 limit 100
24723041 | LNw2vx0GDXo=    | IwfRu8/XAKI=       | select * from test_table where col1=1 limit 100
24723036 | H+qep/c82Y8=    | H+qep/c82Y8=       | select col1 from test_table limit 100
24723033 | H+qep/c82Y8=    | H+qep/c82Y8=       | select * from test_table limit 100
24723029 | H+qep/c82Y8=    | H+qep/c82Y8=       | select * from test_table limit 100
24723023 | 50sirx9E1hU=    | uO36Z1a/QYs=       | insert into test_table values (1),(2)
24723021 | YSVnlivZHeo=    | YSVnlivZHeo=       | create table test_table (col1 int)
```

`SELECT * FROM test_table;`dan `SELECT col1 FROM test_table;` memiliki nilai user\_query\_hash yang sama, karena test\_table hanya memiliki satu kolom. `SELECT * FROM test_table WHERE col1=1;`dan `SELECT * FROM test_table WHERE col1=2;` memiliki nilai user\_query\_hash yang berbeda, tetapi nilai generic\_query\_hash identik, karena kedua kueri identik di luar literal kueri 1 dan 2.