View a markdown version of this page

SYS_QUERY_HISTORY - Amazon Redshift

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

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.

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

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, bukaID kelas layanan WLM.

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.

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

  • terendah

  • rendah

  • biasa

  • tinggi

  • tertinggi

NULL berarti prioritas kueri tidak didukung untuk kueri.

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

  • SALAH

  • NULL

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 adalah0.

nama pengguna karakter (128) Nama pengguna yang mengirimkan kueri.
Query_uuid karakter (36) Pengidentifikasi unik global (UUID) dari kueri.

Kueri Sampel

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.