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 kueri pengguna. Setiap baris mewakili kueri pengguna dengan akumulasi statistik untuk beberapa bidang. Tampilan ini berisi banyak jenis kueri, seperti bahasa definisi data (), bahasa manipulasi data (DDL), copy, unload, dan Amazon Redshift Spectrum. DML 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.
Kolom tabel
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. |
transaksi_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,,, SELECTINSERT,UPDATE,UNLOAD,COPY,COMMAND, DDLUTILITY,CTAS, danOTHER. |
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 batas penggunaan yang IDs 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 kelas layananIDs, bukaWLMkelas layanan IDs. 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. 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:
NULLberarti prioritas kueri tidak didukung untuk kueri. 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:
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) | Hash kueri yang dihasilkan dari kueri, termasuk literal kuerinya. 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. |
Kueri Sampel
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 SELECT kueri 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.