Tabel sistem dan tampilan referensi - Amazon Redshift

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

Tabel sistem dan tampilan referensi

Tabel dan tampilan sistem

Amazon Redshift memiliki banyak tabel dan tampilan sistem yang berisi informasi tentang bagaimana sistem berfungsi. Anda dapat menanyakan tabel dan tampilan sistem ini dengan cara yang sama seperti Anda akan menanyakan tabel database lainnya. Bagian ini menunjukkan beberapa contoh query tabel sistem dan menjelaskan:

  • Bagaimana berbagai jenis tabel dan tampilan sistem dihasilkan

  • Jenis informasi apa yang dapat Anda peroleh dari tabel ini

  • Cara menggabungkan tabel sistem Amazon Redshift ke tabel katalog

  • Cara mengelola pertumbuhan file log tabel sistem

Beberapa tabel sistem hanya dapat digunakan oleh AWS staf untuk tujuan diagnostik. Bagian berikut membahas tabel sistem yang dapat ditanyakan untuk informasi yang berguna oleh administrator sistem atau pengguna database lainnya.

catatan

Tabel sistem tidak termasuk dalam backup cluster otomatis atau manual (snapshot). STLtampilan sistem mempertahankan tujuh hari riwayat log. Mempertahankan log tidak memerlukan tindakan pelanggan apa pun, tetapi jika Anda ingin menyimpan data log selama lebih dari 7 hari, Anda harus menyalinnya secara berkala ke tabel lain atau membongkarnya ke Amazon S3.

Jenis tabel dan tampilan sistem

Ada beberapa jenis tabel dan tampilan sistem:

  • SVVtampilan berisi informasi tentang objek database dengan referensi ke tabel transien. STV

  • SYStampilan digunakan untuk memantau penggunaan kueri dan beban kerja untuk klaster yang disediakan dan grup kerja tanpa server.

  • STLtampilan dihasilkan dari log yang telah disimpan ke disk untuk memberikan riwayat sistem.

  • STVtabel adalah tabel sistem virtual yang berisi snapshot dari data sistem saat ini. Mereka didasarkan pada data dalam memori sementara dan tidak disimpan ke log berbasis disk atau tabel biasa.

  • SVCStampilan memberikan detail tentang kueri pada kluster penskalaan utama dan konkurensi.

  • SVLtampilan memberikan rincian tentang kueri pada cluster utama.

Tabel dan tampilan sistem tidak menggunakan model konsistensi yang sama seperti tabel biasa. Penting untuk mengetahui masalah ini saat menanyakannya, terutama untuk STV tabel dan SVV tampilan. Misalnya, diberikan tabel biasa t1 dengan kolom c1, Anda akan mengharapkan bahwa kueri berikut tidak mengembalikan baris:

select * from t1 where c1 > (select max(c1) from t1)

Namun, kueri berikut terhadap tabel sistem mungkin mengembalikan baris:

select * from stv_exec_state where currenttime > (select max(currenttime) from stv_exec_state)

Alasan kueri ini mungkin mengembalikan baris adalah karena waktu saat ini bersifat sementara dan dua referensi dalam kueri mungkin tidak mengembalikan nilai yang sama saat dievaluasi.

Di sisi lain, kueri berikut mungkin tidak mengembalikan baris:

select * from stv_exec_state where currenttime = (select max(currenttime) from stv_exec_state)

Visibilitas data dalam tabel dan tampilan sistem

Ada dua kelas visibilitas untuk data dalam tabel dan tampilan sistem: terlihat oleh pengguna dan terlihat oleh pengguna super.

Hanya pengguna dengan hak superuser yang dapat melihat data dalam tabel yang berada dalam kategori superuser-visible. Pengguna biasa dapat melihat data dalam tabel yang terlihat pengguna. Untuk memberikan akses pengguna reguler ke tabel yang terlihat oleh pengguna super, berikan SELECT hak istimewa pada tabel itu kepada pengguna biasa. Untuk informasi selengkapnya, lihat GRANT.

Secara default, di sebagian besar tabel yang terlihat pengguna, baris yang dihasilkan oleh pengguna lain tidak terlihat oleh pengguna biasa. Jika pengguna biasa diberikan SYSLOGACCESSUNRESTRICTED, pengguna tersebut dapat melihat semua baris dalam tabel yang terlihat pengguna, termasuk baris yang dihasilkan oleh pengguna lain. Untuk informasi selengkapnya, lihat ALTER USER atau CREATE USER. Semua baris di SVV _ TRANSACTIONS dapat dilihat oleh semua pengguna. Untuk informasi selengkapnya tentang visibilitas data, lihat artikel basis AWS re:Post pengetahuan Bagaimana cara mengizinkan izin pengguna reguler database Amazon Redshift untuk melihat data dalam tabel sistem dari pengguna lain untuk klaster saya? .

Untuk tampilan metadata, Amazon Redshift tidak mengizinkan visibilitas ke pengguna yang diberikan. SYSLOG ACCESS UNRESTRICTED

catatan

Memberikan pengguna akses tak terbatas ke tabel sistem memberikan visibilitas pengguna ke data yang dihasilkan oleh pengguna lain. Misalnya, STL _ QUERY dan STL _ QUERY _ TEXT berisi teks lengkapINSERT,, dan DELETE pernyataanUPDATE, yang mungkin berisi data sensitif buatan pengguna.

Superuser dapat melihat semua baris di semua tabel. Untuk memberikan akses pengguna reguler ke tabel superuser-visible, GRANT SELECT hak istimewa pada tabel itu kepada pengguna biasa.

Memfilter kueri yang dihasilkan sistem

Tabel dan tampilan sistem terkait kueri, seperti SVL _ QUERY _SUMMARY, SVL _QLOG, dan lainnya, biasanya berisi sejumlah besar pernyataan yang dibuat secara otomatis yang digunakan Amazon Redshift untuk memantau status database. Kueri yang dihasilkan sistem ini dapat dilihat oleh pengguna super, tetapi jarang berguna. Untuk memfilternya saat memilih dari tabel sistem atau tampilan sistem yang menggunakan userid kolom, tambahkan kondisi userid > 1 ke WHERE klausa. Sebagai contoh:

select * from svl_query_summary where userid > 1

Memigrasi kueri khusus yang disediakan untuk memantau kueri tampilan SYS

Bermigrasi dari cluster yang disediakan ke Amazon Redshift Tanpa Server

Jika memigrasikan klaster yang disediakan ke Amazon Redshift Tanpa Server, Anda mungkin memiliki kueri menggunakan tampilan sistem berikut, yang hanya menyimpan data dari kluster yang disediakan.

Untuk tetap menggunakan kueri Anda, reparasi untuk menggunakan kolom yang ditentukan dalam tampilan SYS pemantauan yang sesuai dengan kolom dalam tampilan khusus yang disediakan. Untuk melihat hubungan pemetaan antara tampilan khusus yang disediakan dan tampilan SYS pemantauan, buka Pemetaan tampilan sistem untuk bermigrasi ke tampilan pemantauan SYS

Memperbarui kueri sambil tetap berada di klaster yang disediakan

Jika Anda tidak bermigrasi ke Amazon Redshift Tanpa Server, Anda mungkin masih ingin memperbarui kueri yang ada. Tampilan SYS pemantauan dirancang untuk kemudahan penggunaan dan mengurangi kompleksitas, menyediakan rangkaian metrik lengkap untuk pemantauan dan pemecahan masalah yang efektif. Dengan menggunakan SYS tampilan seperti SYS_QUERY_HISTORY dan SYS_QUERY_DETAIL yang mengkonsolidasikan informasi dari beberapa tampilan khusus yang disediakan, Anda dapat merampingkan kueri.

Meningkatkan pelacakan pengenal kueri menggunakan tampilan SYS pemantauan

SYSmemantau tampilan seperti seperti SYS_QUERY_HISTORY dan SYS_QUERY_DETAIL berisi kolom query_id, yang menyimpan pengenal untuk kueri pengguna. Demikian pula, tampilan hanya disediakan seperti STL_QUERY dan SVL_QLOG berisi kolom kueri, yang juga menyimpan pengidentifikasi kueri. Namun, pengidentifikasi kueri yang direkam dalam tampilan SYS sistem berbeda dari yang direkam dalam tampilan khusus yang disediakan.

Perbedaan antara nilai kolom query_id SYS tampilan dan nilai kolom kueri tampilan khusus yang disediakan adalah sebagai berikut:

  • Dalam SYS tampilan, kolom query_id mencatat kueri yang dikirimkan pengguna dalam bentuk aslinya. Pengoptimal Amazon Redshift mungkin memecahnya menjadi kueri turunan untuk meningkatkan kinerja, tetapi satu kueri yang Anda jalankan masih hanya akan memiliki satu baris. SYS_QUERY_HISTORY Jika Anda ingin melihat kueri anak individu, Anda dapat menemukannya diSYS_QUERY_DETAIL.

  • Dalam tampilan khusus yang disediakan, kolom kueri merekam kueri pada tingkat kueri anak. Jika pengoptimal Amazon Redshift menulis ulang kueri asli Anda menjadi beberapa kueri turunan, akan ada beberapa baris STL_QUERY dengan nilai pengenal kueri yang berbeda untuk satu kueri yang Anda jalankan.

Saat Anda memigrasikan kueri pemantauan dan diagnostik dari tampilan khusus yang disediakan ke SYS tampilan, pertimbangkan perbedaan ini dan edit kueri Anda sesuai dengan itu. Untuk informasi selengkapnya tentang cara Amazon Redshift memproses kueri, lihat. Perencanaan kueri dan alur kerja eksekusi

Contoh

Untuk contoh cara Amazon Redshift merekam kueri secara berbeda dalam tampilan khusus yang disediakan dan SYS pemantauan, lihat contoh kueri berikut. Ini adalah kueri yang ditulis karena Anda akan menjalankannya di Amazon Redshift.

SELECT s_name , COUNT(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppkey = l1.l_suppkey AND o_orderkey = l1.l_orderkey AND o_orderstatus = 'F' AND l1.l_receiptdate > l1.l_commitdate AND EXISTS (SELECT * FROM lineitem l2 WHERE l2.l_orderkey = l1.l_orderkey AND l2.l_suppkey <> l1.l_suppkey ) AND NOT EXISTS (SELECT * FROM lineitem l3 WHERE l3.l_orderkey = l1.l_orderkey AND l3.l_suppkey <> l1.l_suppkey AND l3.l_receiptdate > l3.l_commitdate ) AND s_nationkey = n_nationkey AND n_name = 'UNITED STATES' GROUP BY s_name ORDER BY numwait DESC , s_name LIMIT 100;

Di bawah tenda, pengoptimal kueri Amazon Redshift menulis ulang kueri yang dikirimkan pengguna di atas menjadi 5 kueri turunan.

Query anak pertama membuat tabel sementara untuk mewujudkan subquery.

CREATE TEMP TABLE volt_tt_606590308b512(l_orderkey , l_suppkey , s_name ) AS SELECT l1.l_orderkey , l1.l_suppkey , public.supplier.s_name FROM public.lineitem AS l1, public.nation, public.orders, public.supplier WHERE l1.l_commitdate < l1.l_receiptdate AND l1.l_orderkey = public.orders.o_orderkey AND l1.l_suppkey = public.supplier.s_suppkey AND public.nation.n_name = 'UNITED STATES'::CHAR(8) AND public.nation.n_nationkey = public.supplier.s_nationkey AND public.orders.o_orderstatus = 'F'::CHAR(1);

Kueri anak kedua mengumpulkan statistik dari tabel sementara.

padb_fetch_sample: select count(*) from volt_tt_606590308b512;

Kueri anak ketiga membuat tabel sementara lain untuk mewujudkan subquery lain, mereferensikan tabel sementara yang dibuat di atas.

CREATE TEMP TABLE volt_tt_606590308c2ef(l_orderkey , l_suppkey) AS (SELECT volt_tt_606590308b512.l_orderkey , volt_tt_606590308b512.l_suppkey FROM public.lineitem AS l2, volt_tt_606590308b512 WHERE l2.l_suppkey <> volt_tt_606590308b512.l_suppkey AND l2.l_orderkey = volt_tt_606590308b512.l_orderkey) EXCEPT distinct (SELECT volt_tt_606590308b512.l_orderkey, volt_tt_606590308b512.l_suppkey FROM public.lineitem AS l3, volt_tt_606590308b512 WHERE l3.l_commitdate < l3.l_receiptdate AND l3.l_suppkey <> volt_tt_606590308b512.l_suppkey AND l3.l_orderkey = volt_tt_606590308b512.l_orderkey);

Kueri anak keempat kembali mengumpulkan statistik tabel sementara.

padb_fetch_sample: select count(*) from volt_tt_606590308c2ef

Kueri anak terakhir menggunakan tabel sementara yang dibuat di atas untuk menghasilkan output.

SELECT volt_tt_606590308b512.s_name AS s_name , COUNT(*) AS numwait FROM volt_tt_606590308b512, volt_tt_606590308c2ef WHERE volt_tt_606590308b512.l_orderkey = volt_tt_606590308c2ef.l_orderkey AND volt_tt_606590308b512.l_suppkey = volt_tt_606590308c2ef.l_suppkey GROUP BY 1 ORDER BY 2 DESC , 1 ASC LIMIT 100;

Dalam tampilan sistem khusus yang disediakan STL _, Amazon QUERY Redshift merekam lima baris pada tingkat kueri anak, sebagai berikut:

SELECT userid, xid, pid, query, querytxt::varchar(100); FROM stl_query WHERE xid = 48237350 ORDER BY xid, starttime; userid | xid | pid | query | querytxt --------+----------+------------+----------+------------------------------------------------------------------------------------------------------ 101 | 48237350 | 1073840810 | 12058151 | CREATE TEMP TABLE volt_tt_606590308b512(l_orderkey, l_suppkey, s_name) AS SELECT l1.l_orderkey, l1.l 101 | 48237350 | 1073840810 | 12058152 | padb_fetch_sample: select count(*) from volt_tt_606590308b512 101 | 48237350 | 1073840810 | 12058156 | CREATE TEMP TABLE volt_tt_606590308c2ef(l_orderkey, l_suppkey) AS (SELECT volt_tt_606590308b512.l_or 101 | 48237350 | 1073840810 | 12058168 | padb_fetch_sample: select count(*) from volt_tt_606590308c2ef 101 | 48237350 | 1073840810 | 12058170 | SELECT s_name , COUNT(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppkey = l1. (5 rows)

Dalam tampilan SYS pemantauan SYS _ QUERY _HISTORY, Amazon Redshift merekam kueri sebagai berikut:

SELECT user_id, transaction_id, session_id, query_id, query_text::varchar(100) FROM sys_query_history WHERE transaction_id = 48237350 ORDER BY start_time; user_id | transaction_id | session_id | query_id | query_text ---------+----------------+------------+----------+------------------------------------------------------------------------------------------------------ 101 | 48237350 | 1073840810 | 12058149 | SELECT s_name , COUNT(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppkey = l1.

Di SYS _ QUERY _DETAIL, Anda dapat menemukan detail tingkat kueri anak menggunakan nilai query_id dari _ _. SYS QUERY HISTORY Kolom child_query_sequence menunjukkan urutan kueri anak dieksekusi. Untuk informasi selengkapnya tentang kolom di SYS _ QUERY _DETAIL, lihatSYS_QUERY_DETAIL.

select user_id, query_id, child_query_sequence, stream_id, segment_id, step_id, start_time, end_time, duration, blocks_read, blocks_write, local_read_io, remote_read_io, data_skewness, time_skewness, is_active, spilled_block_local_disk, spilled_block_remote_disk from sys_query_detail where query_id = 12058149 and step_id = -1 order by query_id, child_query_sequence, stream_id, segment_id, step_id; user_id | query_id | child_query_sequence | stream_id | segment_id | step_id | start_time | end_time | duration | blocks_read | blocks_write | local_read_io | remote_read_io | data_skewness | time_skewness | is_active | spilled_block_local_disk | spilled_block_remote_disk ---------+----------+----------------------+-----------+------------+---------+----------------------------+----------------------------+----------+-------------+--------------+---------------+----------------+---------------+---------------+-----------+--------------------------+--------------------------- 101 | 12058149 | 1 | 0 | 0 | -1 | 2023-09-27 15:40:38.512415 | 2023-09-27 15:40:38.533333 | 20918 | 0 | 0 | 0 | 0 | 0 | 44 | f | 0 | 0 101 | 12058149 | 1 | 1 | 1 | -1 | 2023-09-27 15:40:39.931437 | 2023-09-27 15:40:39.972826 | 41389 | 12 | 0 | 12 | 0 | 0 | 77 | f | 0 | 0 101 | 12058149 | 1 | 2 | 2 | -1 | 2023-09-27 15:40:40.584412 | 2023-09-27 15:40:40.613982 | 29570 | 32 | 0 | 32 | 0 | 0 | 25 | f | 0 | 0 101 | 12058149 | 1 | 2 | 3 | -1 | 2023-09-27 15:40:40.582038 | 2023-09-27 15:40:40.615758 | 33720 | 0 | 0 | 0 | 0 | 0 | 1 | f | 0 | 0 101 | 12058149 | 1 | 3 | 4 | -1 | 2023-09-27 15:40:46.668766 | 2023-09-27 15:40:46.705456 | 36690 | 24 | 0 | 15 | 0 | 0 | 17 | f | 0 | 0 101 | 12058149 | 1 | 4 | 5 | -1 | 2023-09-27 15:40:46.707209 | 2023-09-27 15:40:46.709176 | 1967 | 0 | 0 | 0 | 0 | 0 | 18 | f | 0 | 0 101 | 12058149 | 1 | 4 | 6 | -1 | 2023-09-27 15:40:46.70656 | 2023-09-27 15:40:46.71289 | 6330 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 1 | 5 | 7 | -1 | 2023-09-27 15:40:46.71405 | 2023-09-27 15:40:46.714343 | 293 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 2 | 0 | 0 | -1 | 2023-09-27 15:40:52.083907 | 2023-09-27 15:40:52.087854 | 3947 | 0 | 0 | 0 | 0 | 0 | 35 | f | 0 | 0 101 | 12058149 | 2 | 1 | 1 | -1 | 2023-09-27 15:40:52.089632 | 2023-09-27 15:40:52.091129 | 1497 | 0 | 0 | 0 | 0 | 0 | 11 | f | 0 | 0 101 | 12058149 | 2 | 1 | 2 | -1 | 2023-09-27 15:40:52.089008 | 2023-09-27 15:40:52.091306 | 2298 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 3 | 0 | 0 | -1 | 2023-09-27 15:40:56.882013 | 2023-09-27 15:40:56.897282 | 15269 | 0 | 0 | 0 | 0 | 0 | 29 | f | 0 | 0 101 | 12058149 | 3 | 1 | 1 | -1 | 2023-09-27 15:40:59.718554 | 2023-09-27 15:40:59.722789 | 4235 | 0 | 0 | 0 | 0 | 0 | 13 | f | 0 | 0 101 | 12058149 | 3 | 2 | 2 | -1 | 2023-09-27 15:40:59.800382 | 2023-09-27 15:40:59.807388 | 7006 | 0 | 0 | 0 | 0 | 0 | 58 | f | 0 | 0 101 | 12058149 | 3 | 3 | 3 | -1 | 2023-09-27 15:41:06.488685 | 2023-09-27 15:41:06.493825 | 5140 | 0 | 0 | 0 | 0 | 0 | 56 | f | 0 | 0 101 | 12058149 | 3 | 3 | 4 | -1 | 2023-09-27 15:41:06.486206 | 2023-09-27 15:41:06.497756 | 11550 | 0 | 0 | 0 | 0 | 0 | 2 | f | 0 | 0 101 | 12058149 | 3 | 4 | 5 | -1 | 2023-09-27 15:41:06.499201 | 2023-09-27 15:41:06.500851 | 1650 | 0 | 0 | 0 | 0 | 0 | 15 | f | 0 | 0 101 | 12058149 | 3 | 4 | 6 | -1 | 2023-09-27 15:41:06.498609 | 2023-09-27 15:41:06.500949 | 2340 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 3 | 5 | 7 | -1 | 2023-09-27 15:41:06.502945 | 2023-09-27 15:41:06.503282 | 337 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 4 | 0 | 0 | -1 | 2023-09-27 15:41:06.62899 | 2023-09-27 15:41:06.631452 | 2462 | 0 | 0 | 0 | 0 | 0 | 22 | f | 0 | 0 101 | 12058149 | 4 | 1 | 1 | -1 | 2023-09-27 15:41:06.632313 | 2023-09-27 15:41:06.63391 | 1597 | 0 | 0 | 0 | 0 | 0 | 20 | f | 0 | 0 101 | 12058149 | 4 | 1 | 2 | -1 | 2023-09-27 15:41:06.631726 | 2023-09-27 15:41:06.633813 | 2087 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 5 | 0 | 0 | -1 | 2023-09-27 15:41:12.571974 | 2023-09-27 15:41:12.584234 | 12260 | 0 | 0 | 0 | 0 | 0 | 39 | f | 0 | 0 101 | 12058149 | 5 | 0 | 1 | -1 | 2023-09-27 15:41:12.569815 | 2023-09-27 15:41:12.585391 | 15576 | 0 | 0 | 0 | 0 | 0 | 4 | f | 0 | 0 101 | 12058149 | 5 | 1 | 2 | -1 | 2023-09-27 15:41:13.758513 | 2023-09-27 15:41:13.76401 | 5497 | 0 | 0 | 0 | 0 | 0 | 39 | f | 0 | 0 101 | 12058149 | 5 | 1 | 3 | -1 | 2023-09-27 15:41:13.749 | 2023-09-27 15:41:13.772987 | 23987 | 0 | 0 | 0 | 0 | 0 | 32 | f | 0 | 0 101 | 12058149 | 5 | 2 | 4 | -1 | 2023-09-27 15:41:13.799526 | 2023-09-27 15:41:13.813506 | 13980 | 0 | 0 | 0 | 0 | 0 | 62 | f | 0 | 0 101 | 12058149 | 5 | 2 | 5 | -1 | 2023-09-27 15:41:13.798823 | 2023-09-27 15:41:13.813651 | 14828 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 (28 rows)

Kueri tabel sistem, proses, dan id sesi

Saat menganalisis kueri, proses, dan id sesi yang muncul di tabel sistem, perhatikan hal-hal berikut:

  • Nilai id kueri (dalam kolom seperti query_id danquery) dapat digunakan kembali dari waktu ke waktu.

  • Id proses atau nilai id sesi (dalam kolom sepertiprocess_id,pid, dansession_id) dapat digunakan kembali dari waktu ke waktu.

  • Nilai id transaksi (dalam kolom seperti transaction_id danxid) adalah unik.