

 Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, 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/) yang diterbitkan pada 30 Juni 2025. 

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 permintaan pengguna. Setiap baris mewakili permintaan pengguna dengan statistik terakumulasi untuk beberapa bidang. Tampilan ini berisi banyak jenis kueri, seperti bahasa definisi data (DDL), bahasa manipulasi data (DML), copy, unload, dan Amazon Redshift Spectrum. Ini berisi kueri yang sedang berjalan dan selesai.

SYS\_QUERY\_HISTORY terlihat 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. | 
| label kueri | karakter (320) | Nama pendek untuk query. | 
| id transaksi\_ | bigint | Pengidentifikasi transaksi. | 
| session\_id | integer | Pengidentifikasi proses dari proses yang menjalankan kueri. | 
| database\_name | karakter (128) | Nama database yang terhubung ke pengguna saat kueri dikeluarkan. | 
| query\_type | karakter (32) | Jenis kueri, 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 berhasil. | 
| result\_cache\_hit | Boolean | Menunjukkan apakah kueri cocok dengan cache hasil. | 
| waktu mulai | timestamp | Waktu ketika kueri dimulai. | 
| akhir\_waktu | timestamp | Waktu ketika kueri selesai. | 
| waktu yang telah berlalu | bigint | Jumlah total waktu (mikrodetik) yang dihabiskan untuk kueri. | 
| antrian\_waktu | bigint | Total waktu (mikrodetik) yang dihabiskan pada antrian kueri kelas layanan. | 
| waktu\_eksekusi | bigint | Total waktu (mikrodetik) berjalan di kelas layanan. | 
| pesan kesalahan | karakter (512) | Alasan permintaan gagal. | 
| baris yang dikembalikan | bigint | Jumlah baris dikembalikan ke klien.  | 
| Byte\_dikembalikan | bigint | Jumlah byte yang dikembalikan ke klien.  | 
| kueri\_teks | karakter (4000) | String kueri. String ini mungkin terpotong.  | 
| redshift\_versi | karakter (256) | Versi Amazon Redshift saat kueri berjalan. | 
| pemakaian\_batas | karakter (150) | Daftar ID batas penggunaan yang dicapai oleh kueri. | 
| tipe komputasi | varchar(32) | Menunjukkan apakah kueri berjalan pada 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 cluster yang disediakan. | 
| compile\_time | bigint | Total waktu (mikrodetik) yang dihabiskan untuk kompilasi kueri. | 
| waktu\_perencanaan | bigint | Total waktu (mikrodetik) yang dihabiskan untuk perencanaan kueri. | 
| kunci\_waktu\_tunggu | bigint | Total waktu (mikrodetik) yang dihabiskan untuk menunggu kunci relasi. | 
| id kelas layanan | 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 cluster yang disediakan. Untuk kueri yang dijalankan di Redshift Serverless, kolom ini berisi -1. | 
| nama\_kelas\_layanan | karakter (64) | Nama kelas layanan.<br />Kolom ini hanya digunakan untuk kueri yang dijalankan pada cluster yang disediakan. Untuk kueri yang dijalankan di Amazon Redshift Redshift Serverless, kolom ini kosong. | 
| Query\_Prioritas | karakter (20) | Prioritas antrian di mana kueri berjalan. Kemungkinan nilainya adalah sebagai berikut:+   NULL  <br />+   terendah  <br />+   rendah  <br />+   biasa  <br />+   tinggi  <br />+   tertinggi  <br />NULL berarti prioritas kueri tidak didukung untuk kueri.<br />Kolom ini hanya digunakan untuk kueri yang dijalankan pada cluster yang disediakan. Untuk kueri yang dijalankan di Redshift Serverless, kolom ini kosong. | 
| short\_query\_dipercepat | karakter (10) | Apakah kueri dipercepat menggunakan akselerasi kueri pendek (SQA). Kemungkinan nilainya adalah sebagai berikut:+   true  <br />+   SALAH  <br />+   NULL  <br />Kolom ini hanya digunakan untuk kueri yang dijalankan pada cluster yang disediakan. Untuk kueri yang dijalankan di Redshift Serverless, kolom ini kosong. | 
| user\_query\_hash | karakter (40) | Hash kueri yang dihasilkan dari kueri, termasuk literal kuerinya. Kueri berulang dengan teks kueri yang sama akan memiliki nilai user\_query\_hash yang sama. | 
| generik\_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. | 
| versi\_hash kueri | 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 yang mengirimkan kueri. | 
| Query\_uuid | karakter (36) | Pengidentifikasi unik global (UUID) dari kueri. | 

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

Kueri berikut mengembalikan kueri yang sedang berjalan dan mengantri.

```
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;
```

Sampel keluaran.

```
 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;
```

Sampel keluaran.

```
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;
```

Sampel keluaran.

```
 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;
```

Sampel keluaran.

```
      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 kueri harian yang telah berlalu.

```
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;
```

Sampel keluaran.

```
      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 kueri.

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

Sampel keluaran.

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

Contoh berikut menunjukkan perbedaan hasil hash query antara beberapa query. Amati pertanyaan 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.