Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Mengkonfigurasi manajemen beban kerja manual () antrian WLM
Dengan Amazon Redshift, Anda dapat mengonfigurasi antrian manajemen beban kerja manual (WLM) untuk memprioritaskan dan mengalokasikan sumber daya untuk berbagai jenis kueri dan pengguna. WLMAntrian manual memungkinkan Anda untuk mengontrol memori dan pengaturan konkurensi untuk antrian tertentu, memastikan bahwa beban kerja kritis menerima sumber daya yang diperlukan sambil mencegah kueri prioritas rendah memonopoli sistem. Bagian berikut memandu Anda melalui proses membuat dan mengonfigurasi WLM antrian manual di Amazon Redshift untuk memenuhi persyaratan manajemen beban kerja Anda.
Gambaran Umum
Kami merekomendasikan untuk mengonfigurasi manajemen beban kerja otomatis (WLM) di Amazon Redshift. Untuk informasi selengkapnya tentang otomatisWLM, lihatManajemen beban kerja. Namun, jika Anda memerlukan beberapa WLM antrian, tutorial ini memandu Anda melalui proses mengonfigurasi manajemen beban kerja manual () di WLM Amazon Redshift. Dengan mengonfigurasi manualWLM, Anda dapat meningkatkan kinerja kueri dan alokasi sumber daya di klaster Anda.
Amazon Redshift merutekan kueri pengguna ke antrian untuk diproses. WLMmendefinisikan bagaimana kueri tersebut diarahkan ke antrian. Secara default, Amazon Redshift memiliki dua antrian yang tersedia untuk kueri: satu untuk pengguna super, dan satu untuk pengguna. Antrian superuser tidak dapat dikonfigurasi dan hanya dapat memproses satu kueri pada satu waktu. Anda harus memesan antrian ini hanya untuk tujuan pemecahan masalah. Antrian pengguna dapat memproses hingga lima kueri sekaligus, tetapi Anda dapat mengonfigurasinya dengan mengubah tingkat konkurensi antrian jika diperlukan.
Ketika Anda memiliki beberapa pengguna yang menjalankan kueri terhadap database, Anda mungkin menemukan konfigurasi lain menjadi lebih efisien. Misalnya, jika beberapa pengguna menjalankan operasi intensif sumber daya, sepertiVACUUM, ini mungkin berdampak negatif pada kueri yang kurang intensif, seperti laporan. Anda dapat mempertimbangkan untuk menambahkan antrian tambahan dan mengonfigurasinya untuk beban kerja yang berbeda.
Perkiraan waktu: 75 menit
Perkiraan biaya: 50 sen
Prasyarat
Anda memerlukan cluster Amazon Redshift, TICKIT database sampel, dan alat klien Amazon RSQL Redshift. Jika Anda belum memiliki pengaturan ini, buka Panduan Memulai Amazon Redshift dan Amazon Redshift. RSQL
Bagian-bagian
Bagian 1: Memahami perilaku pemrosesan antrian default
Sebelum Anda mulai mengonfigurasi manualWLM, penting untuk memahami perilaku default pemrosesan antrian di Amazon Redshift. Di bagian ini, Anda membuat dua tampilan database yang mengembalikan informasi dari beberapa tabel sistem. Kemudian Anda menjalankan beberapa kueri pengujian untuk melihat bagaimana kueri dirutekan secara default. Untuk informasi selengkapnya tentang tabel sistem, lihatTabel sistem dan tampilan referensi.
Langkah 1: Buat tampilan WLM _ QUEUE _ STATE _VW
Pada langkah ini, Anda membuat tampilan yang disebut WLM _ QUEUE _ STATE _VW. Tampilan ini mengembalikan informasi dari tabel sistem berikut.
Anda menggunakan tampilan ini di seluruh tutorial untuk memantau apa yang terjadi pada antrian setelah Anda mengubah konfigurasi. WLM Tabel berikut menjelaskan data yang ditampilkan oleh tampilan WLM _ QUEUE _ STATE _VW.
Kolom | Deskripsi |
---|---|
antrean | Nomor yang terkait dengan baris yang mewakili antrian. Nomor antrian menentukan urutan antrian dalam database. |
deskripsi | Nilai yang menjelaskan apakah antrian hanya tersedia untuk grup pengguna tertentu, ke grup kueri tertentu, atau semua jenis kueri. |
slot | Jumlah slot yang dialokasikan untuk antrian. |
mem | Jumlah memori, dalam MB per slot, dialokasikan ke antrian. |
max_execution_time | Jumlah waktu kueri diizinkan untuk dijalankan sebelum dihentikan. |
pengguna_* | Nilai yang menunjukkan apakah karakter wildcard diizinkan dalam WLM konfigurasi untuk mencocokkan grup pengguna. |
pertanyaan_* | Nilai yang menunjukkan apakah karakter wildcard diizinkan dalam WLM konfigurasi untuk mencocokkan grup kueri. |
mengantri | Jumlah kueri yang menunggu dalam antrian untuk diproses. |
mengeksekusi | Jumlah kueri yang sedang berjalan. |
dieksekusi | Jumlah query yang telah dijalankan. |
Untuk membuat tampilan WLM _ QUEUE _ STATE _VW
-
Buka Amazon Redshift RSQL dan sambungkan ke database TICKIT sampel Anda. Jika Anda tidak memiliki database ini, lihatPrasyarat.
-
Jalankan kueri berikut untuk membuat tampilan WLM _ QUEUE _ STATE _VW.
create view WLM_QUEUE_STATE_VW as select (config.service_class-5) as queue , trim (class.condition) as description , config.num_query_tasks as slots , config.query_working_mem as mem , config.max_execution_time as max_time , config.user_group_wild_card as "user_*" , config.query_group_wild_card as "query_*" , state.num_queued_queries queued , state.num_executing_queries executing , state.num_executed_queries executed from STV_WLM_CLASSIFICATION_CONFIG class, STV_WLM_SERVICE_CLASS_CONFIG config, STV_WLM_SERVICE_CLASS_STATE state where class.action_service_class = config.service_class and class.action_service_class = state.service_class and config.service_class > 4 order by config.service_class;
-
Jalankan kueri berikut untuk melihat informasi yang berisi tampilan.
select * from wlm_queue_state_vw;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (querytype:any) | 5 | 836 | 0 | false | false | 0 | 1 | 160
Langkah 2: Buat tampilan WLM _ QUERY _ STATE _VW
Pada langkah ini, Anda membuat tampilan yang disebut WLM _ QUERY _ STATE _VW. Tampilan ini mengembalikan informasi dari tabel STV_WLM_QUERY_STATE sistem.
Anda menggunakan tampilan ini di seluruh tutorial untuk memantau kueri yang sedang berjalan. Tabel berikut menjelaskan data yang ditampilkan oleh tampilan WLM _ QUERY _ STATE _VW.
Kolom | Deskripsi |
---|---|
kueri | ID kueri. |
antrean | Nomor antrian. |
slot_count | Jumlah slot yang dialokasikan untuk kueri. |
start_time | Waktu kueri dimulai. |
status | Keadaan query, seperti mengeksekusi. |
antrian_waktu | Jumlah mikrodetik yang telah dihabiskan kueri dalam antrian. |
exec_time | Jumlah mikrodetik yang telah dijalankan kueri. |
Untuk membuat tampilan WLM _ QUERY _ STATE _VW
-
DiRSQL, jalankan kueri berikut untuk membuat tampilan WLM _ QUERY _ STATE _VW.
create view WLM_QUERY_STATE_VW as select query, (service_class-5) as queue, slot_count, trim(wlm_start_time) as start_time, trim(state) as state, trim(queue_time) as queue_time, trim(exec_time) as exec_time from stv_wlm_query_state;
-
Jalankan kueri berikut untuk melihat informasi yang berisi tampilan.
select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 1249 | 1 | 1 | 2014-09-24 22:19:16 | Executing | 0 | 516
Langkah 3: Jalankan kueri uji
Pada langkah ini, Anda menjalankan kueri dari beberapa koneksi RSQL dan meninjau tabel sistem untuk menentukan cara kueri dirutekan untuk diproses.
Untuk langkah ini, Anda memerlukan dua RSQL jendela terbuka:
-
Di RSQL jendela 1, Anda menjalankan kueri yang memantau keadaan antrian dan kueri menggunakan tampilan yang sudah Anda buat dalam tutorial ini.
-
Di RSQL jendela 2, Anda menjalankan kueri yang berjalan lama untuk mengubah hasil yang Anda temukan di RSQL jendela 1.
Untuk menjalankan kueri pengujian
-
Buka dua RSQL jendela. Jika Anda sudah memiliki satu jendela terbuka, Anda hanya perlu membuka jendela kedua. Anda dapat menggunakan akun pengguna yang sama untuk kedua koneksi ini.
-
Di RSQL jendela 1, jalankan query berikut.
select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 1258 | 1 | 1 | 2014-09-24 22:21:03 | Executing | 0 | 549
Kueri ini mengembalikan hasil referensial diri. Kueri yang sedang berjalan adalah SELECT pernyataan dari tampilan ini. Kueri pada tampilan ini selalu mengembalikan setidaknya satu hasil. Bandingkan hasil ini dengan hasil yang terjadi setelah memulai kueri yang berjalan lama di langkah berikutnya.
-
Di RSQL jendela 2, jalankan kueri dari database TICKIT sampel. Kueri ini harus berjalan sekitar satu menit sehingga Anda memiliki waktu untuk menjelajahi hasil tampilan WLM _ QUEUE _ STATE _VW dan tampilan WLM _ QUERY _ STATE _VW yang Anda buat sebelumnya. Dalam beberapa kasus, Anda mungkin menemukan bahwa kueri tidak berjalan cukup lama bagi Anda untuk menanyakan kedua tampilan. Dalam kasus ini, Anda dapat meningkatkan nilai filter
l.listid
agar berjalan lebih lama.catatan
Untuk mengurangi waktu eksekusi kueri dan meningkatkan kinerja sistem, Amazon Redshift menyimpan hasil jenis kueri tertentu dalam memori pada node pemimpin. Ketika hasil caching diaktifkan, kueri berikutnya berjalan lebih cepat. Untuk mencegah kueri berjalan dengan cepat, nonaktifkan caching hasil untuk sesi saat ini.
Untuk mematikan caching hasil untuk sesi saat ini, atur enable_result_cache_for_session parameter ke
off
, seperti yang ditunjukkan berikut.set enable_result_cache_for_session to off;
Di RSQL jendela 2, jalankan query berikut.
select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid < 100000;
-
Di RSQL jendela 1, kueri WLM _ QUEUE _ STATE _VW dan WLM _ QUERY _ STATE _VW dan bandingkan hasilnya dengan hasil Anda sebelumnya.
select * from wlm_queue_state_vw; select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (querytype:any) | 5 | 836 | 0 | false | false | 0 | 2 | 163 query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 1267 | 1 | 1 | 2014-09-24 22:22:30 | Executing | 0 | 684 1265 | 1 | 1 | 2014-09-24 22:22:36 | Executing | 0 | 4080859
Perhatikan perbedaan berikut antara kueri Anda sebelumnya dan hasil di langkah ini:
-
Ada dua baris sekarang di WLM _ QUERY _ STATE _VW. Salah satu hasilnya adalah kueri referensi mandiri untuk menjalankan SELECT operasi pada tampilan ini. Hasil kedua adalah kueri yang berjalan lama dari langkah sebelumnya.
-
Kolom eksekusi di WLM _ QUEUE _ STATE _VW telah meningkat dari 1 menjadi 2. Entri kolom ini berarti bahwa ada dua query yang berjalan dalam antrian.
-
Kolom yang dieksekusi bertambah setiap kali Anda menjalankan kueri dalam antrian.
Tampilan WLM _ QUEUE _ STATE _VW berguna untuk mendapatkan tampilan keseluruhan antrian dan berapa banyak kueri yang sedang diproses di setiap antrian. Tampilan WLM _ QUERY _ STATE _VW berguna untuk mendapatkan tampilan yang lebih rinci dari kueri individual yang sedang berjalan.
Bagian 2: Memodifikasi konfigurasi antrian WLM kueri
Sekarang setelah Anda memahami cara kerja antrian secara default, Anda dapat mempelajari cara mengonfigurasi antrian kueri menggunakan manual. WLM Di bagian ini, Anda membuat dan mengkonfigurasi grup parameter baru untuk cluster Anda. Anda membuat dua antrian pengguna tambahan dan mengonfigurasinya untuk menerima kueri berdasarkan grup pengguna kueri atau label grup kueri. Setiap kueri yang tidak dialihkan ke salah satu dari dua antrian ini dirutekan ke antrian default saat runtime.
Untuk membuat WLM konfigurasi manual dalam grup parameter
-
Masuk ke AWS Management Console dan buka konsol Amazon Redshift di. https://console.aws.amazon.com/redshiftv2/
-
Pada menu navigasi, pilih Konfigurasi, lalu pilih Manajemen beban kerja untuk menampilkan halaman Manajemen beban kerja.
-
Pilih Buat untuk menampilkan jendela Buat grup parameter.
-
Masukkan
WLMTutorial
untuk kedua nama grup Parameter dan Deskripsi, lalu pilih Buat untuk membuat grup parameter.catatan
Nama grup Parameter dikonversi ke semua format huruf kecil saat dibuat.
-
Pada halaman Manajemen beban kerja, pilih grup parameter
wlmtutorial
untuk menampilkan halaman detail dengan tab untuk Parameter dan Manajemen Beban Kerja. -
Konfirmasikan bahwa Anda berada di tab Manajemen beban kerja, lalu pilih WLMMode beralih untuk menampilkan jendela Pengaturan konkurensi.
-
Pilih Manual WLM, lalu pilih Simpan untuk beralih ke manualWLM.
-
Pilih Edit antrian beban kerja.
-
Pilih Tambahkan antrian dua kali untuk menambahkan dua antrian. Sekarang ada tiga antrian: Antrian 1, Antrian 2, dan antrian Default.
-
Masukkan informasi untuk setiap antrian sebagai berikut:
-
Untuk Antrian 1, masukkan
30
untuk Memori (%),2
untuk Concurrency di main, dantest
untuk grup Query. Biarkan pengaturan lain dengan nilai defaultnya. -
Untuk Antrian 2, masukkan
40
untuk Memori (%),3
untuk Konkurensi di main, danadmin
untuk grup Pengguna. Biarkan pengaturan lain dengan nilai defaultnya. -
Jangan membuat perubahan apa pun pada antrean Default. WLMmenetapkan memori yang tidak terisi ke antrian default.
-
-
Pilih Simpan untuk menyimpan pengaturan Anda.
Selanjutnya, kaitkan grup parameter yang memiliki WLM konfigurasi manual dengan cluster.
Untuk mengaitkan grup parameter dengan WLM konfigurasi manual dengan cluster
-
Masuk ke AWS Management Console dan buka konsol Amazon Redshift di. https://console.aws.amazon.com/redshiftv2/
-
Pada menu navigasi, pilih Cluster, lalu pilih Cluster untuk menampilkan daftar cluster Anda.
-
Pilih cluster Anda, seperti
examplecluster
untuk menampilkan detail cluster. Kemudian pilih tab Properties untuk menampilkan properti cluster itu. -
Di bagian Konfigurasi basis data, pilih Edit, Edit grup parameter untuk menampilkan jendela grup parameter.
-
Untuk grup Parameter pilih grup
wlmtutorial
parameter yang sebelumnya Anda buat. -
Pilih Simpan perubahan untuk mengaitkan grup parameter.
Cluster dimodifikasi dengan grup parameter yang diubah. Namun, Anda perlu me-reboot cluster agar perubahan juga diterapkan ke database.
-
Pilih cluster Anda, lalu pilih Reboot for Actions.
Setelah cluster di-boot ulang, statusnya kembali ke Available.
Bagian 3: Merutekan kueri ke antrian berdasarkan grup pengguna dan grup kueri
Sekarang Anda memiliki cluster Anda terkait dengan grup parameter baru dan Anda telah mengkonfigurasiWLM. Selanjutnya, jalankan beberapa kueri untuk melihat bagaimana Amazon Redshift merutekan kueri ke antrian untuk diproses.
Langkah 1: Lihat konfigurasi antrian kueri dalam database
Pertama, verifikasi bahwa database memiliki WLM konfigurasi yang Anda harapkan.
Untuk melihat konfigurasi antrian kueri
-
Buka RSQL dan jalankan query berikut. Kueri menggunakan tampilan WLM _ QUEUE _ STATE _VW yang Anda buat. Langkah 1: Buat tampilan WLM _ QUEUE _ STATE _VW Jika Anda sudah memiliki sesi yang terhubung ke database sebelum cluster reboot, Anda perlu menyambung kembali.
select * from wlm_queue_state_vw;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 0 | 0 | 0 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 0 | 0 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 1 | 0
Bandingkan hasil ini dengan hasil yang Anda terimaLangkah 1: Buat tampilan WLM _ QUEUE _ STATE _VW. Perhatikan bahwa sekarang ada dua antrian tambahan. Antrian 1 sekarang menjadi antrian untuk grup kueri pengujian, dan antrian 2 adalah antrian untuk grup pengguna admin.
Antrian 3 sekarang menjadi antrian default. Antrian terakhir dalam daftar selalu antrian default. Itulah antrian ke mana kueri dirutekan secara default jika tidak ada grup pengguna atau grup kueri yang ditentukan dalam kueri.
-
Jalankan kueri berikut untuk mengonfirmasi bahwa kueri Anda sekarang berjalan dalam antrian 3.
select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 2144 | 3 | 1 | 2014-09-24 23:49:59 | Executing | 0 | 550430
Langkah 2: Jalankan kueri menggunakan antrian grup kueri
Untuk menjalankan kueri menggunakan antrian grup kueri
-
Jalankan query berikut untuk merutekan ke grup
test
query.set query_group to test; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
-
Dari RSQL jendela lain, jalankan query berikut.
select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 2168 | 1 | 1 | 2014-09-24 23:54:18 | Executing | 0 | 6343309 2170 | 3 | 1 | 2014-09-24 23:54:24 | Executing | 0 | 847
Kueri dirutekan ke grup kueri uji, yang sekarang merupakan antrian 1.
-
Pilih semua dari tampilan status antrian.
select * from wlm_queue_state_vw;
Anda melihat hasil yang mirip dengan berikut ini.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 0 | 1 | 0 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 0 | 0 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 1 | 0
-
Sekarang, atur ulang grup kueri dan jalankan kueri panjang lagi:
reset query_group; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
-
Jalankan kueri terhadap tampilan untuk melihat hasilnya.
select * from wlm_queue_state_vw; select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 0 | 0 | 1 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 0 | 0 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 2 | 5 query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 2186 | 3 | 1 | 2014-09-24 23:57:52 | Executing | 0 | 649 2184 | 3 | 1 | 2014-09-24 23:57:48 | Executing | 0 | 4137349
Hasilnya seharusnya kueri sekarang berjalan dalam antrian 3 lagi.
Langkah 3: Buat pengguna database dan grup
Sebelum Anda dapat menjalankan kueri apa pun dalam antrian ini, Anda perlu membuat grup pengguna dalam database dan menambahkan pengguna ke grup. Kemudian Anda masuk dengan RSQL menggunakan kredensi pengguna baru dan menjalankan kueri. Anda perlu menjalankan kueri sebagai superuser, seperti pengguna admin, untuk membuat pengguna database.
Untuk membuat pengguna database baru dan grup pengguna
-
Dalam database, buat pengguna database baru bernama
adminwlm
dengan menjalankan perintah berikut di RSQL jendela.create user adminwlm createuser password '123Admin';
-
Kemudian, jalankan perintah berikut untuk membuat grup pengguna baru dan menambahkan
adminwlm
pengguna baru Anda ke dalamnya.create group admin; alter group admin add user adminwlm;
Langkah 4: Jalankan kueri menggunakan antrian grup pengguna
Selanjutnya Anda menjalankan kueri dan mengarahkannya ke antrian grup pengguna. Anda melakukan ini ketika Anda ingin merutekan kueri Anda ke antrian yang dikonfigurasi untuk menangani jenis kueri yang ingin Anda jalankan.
Untuk menjalankan kueri menggunakan antrean grup pengguna
-
Di RSQL jendela 2, jalankan kueri berikut untuk beralih ke
adminwlm
akun dan menjalankan kueri sebagai pengguna tersebut.set session authorization 'adminwlm'; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
-
Di RSQL jendela 1, jalankan kueri berikut untuk melihat antrian kueri tempat kueri dirutekan.
select * from wlm_query_state_vw; select * from wlm_queue_state_vw;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 0 | 0 | 1 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 1 | 0 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 1 | 8 query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 2202 | 2 | 1 | 2014-09-25 00:01:38 | Executing | 0 | 4885796 2204 | 3 | 1 | 2014-09-25 00:01:43 | Executing | 0 | 650
Antrian tempat kueri ini dijalankan adalah antrian 2, antrian
admin
pengguna. Setiap kali Anda menjalankan kueri yang masuk sebagai pengguna ini, mereka berjalan dalam antrian 2 kecuali Anda menentukan grup kueri yang berbeda untuk digunakan. Antrian yang dipilih tergantung pada aturan penetapan antrian. Untuk informasi selengkapnya, lihat WLMaturan penetapan antrian. -
Sekarang jalankan query berikut dari RSQL jendela 2.
set query_group to test; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
-
Di RSQL jendela 1, jalankan kueri berikut untuk melihat antrian kueri tempat kueri dirutekan.
select * from wlm_queue_state_vw; select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 0 | 1 | 1 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 0 | 1 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 1 | 10 query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 2218 | 1 | 1 | 2014-09-25 00:04:30 | Executing | 0 | 4819666 2220 | 3 | 1 | 2014-09-25 00:04:35 | Executing | 0 | 685
-
Setelah selesai, setel ulang grup kueri.
reset query_group;
Bagian 4: Menggunakan wlm_query_slot_count untuk sementara mengganti level konkurensi dalam antrian
Terkadang, pengguna mungkin sementara membutuhkan lebih banyak sumber daya untuk kueri tertentu. Jika demikian, mereka dapat menggunakan pengaturan konfigurasi wlm_query_slot_count untuk mengganti sementara cara slot dialokasikan dalam antrian kueri. Slot adalah unit memori dan CPU yang digunakan untuk memproses kueri. Anda dapat mengganti jumlah slot ketika Anda memiliki kueri sesekali yang mengambil banyak sumber daya di cluster, seperti ketika Anda melakukan VACUUM operasi dalam database.
Anda mungkin menemukan bahwa pengguna sering perlu mengatur wlm_query_slot_count untuk jenis kueri tertentu. Jika demikian, pertimbangkan untuk menyesuaikan WLM konfigurasi dan memberi pengguna antrian yang lebih sesuai dengan kebutuhan kueri mereka. Untuk informasi lebih lanjut tentang mengesampingkan sementara level konkurensi dengan menggunakan jumlah slot, lihat. wlm_query_slot_count
Langkah 1: Ganti level konkurensi menggunakan wlm_query_slot_count
Untuk keperluan tutorial ini, kami menjalankan SELECT query lama yang sama. Kami menjalankannya sebagai adminwlm
pengguna menggunakan wlm_query_slot_count untuk meningkatkan jumlah slot yang tersedia untuk kueri.
Untuk mengganti level konkurensi menggunakan wlm_query_slot_count
-
Tingkatkan batas kueri untuk memastikan bahwa Anda memiliki cukup waktu untuk menanyakan tampilan WLM _ QUERY _ STATE _VW dan melihat hasilnya.
set wlm_query_slot_count to 3; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
-
Sekarang, kueri WLM QUERY _ _ STATE _VW dengan pengguna admin untuk melihat bagaimana kueri berjalan.
select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 2240 | 2 | 1 | 2014-09-25 00:08:45 | Executing | 0 | 3731414 2242 | 3 | 1 | 2014-09-25 00:08:49 | Executing | 0 | 596
Perhatikan bahwa jumlah slot untuk kueri adalah 3. Hitungan ini berarti bahwa kueri menggunakan ketiga slot untuk memproses kueri, mengalokasikan semua sumber daya dalam antrian ke kueri itu.
-
Sekarang, jalankan query berikut.
select * from WLM_QUEUE_STATE_VW;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 0 | 0 | 4 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 1 | 3 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 1 | 25
Pengaturan konfigurasi wlm_query_slot_count hanya berlaku untuk sesi saat ini. Jika sesi itu kedaluwarsa, atau pengguna lain menjalankan kueri, WLM konfigurasi akan digunakan.
-
Setel ulang jumlah slot dan jalankan kembali tes.
reset wlm_query_slot_count; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 0 | 0 | 2 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 1 | 2 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 1 | 14 query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+-----------+------------+----------- 2260 | 2 | 1 | 2014-09-25 00:12:11 | Executing | 0 | 4042618 2262 | 3 | 1 | 2014-09-25 00:12:15 | Executing | 0 | 680
Langkah 2: Jalankan kueri dari sesi yang berbeda
Selanjutnya, jalankan kueri dari sesi yang berbeda.
Untuk menjalankan kueri dari sesi yang berbeda
-
Di RSQL jendela 1 dan 2, jalankan berikut ini untuk menggunakan grup kueri uji.
set query_group to test;
-
Di RSQL jendela 1, jalankan kueri yang berjalan lama berikut.
select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
-
Karena kueri yang berjalan lama masih ada di RSQL jendela 1, jalankan yang berikut ini. Perintah ini meningkatkan jumlah slot untuk menggunakan semua slot untuk antrian dan kemudian mulai menjalankan kueri yang berjalan lama.
set wlm_query_slot_count to 2; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
-
Buka RSQL jendela ketiga dan kueri tampilan untuk melihat hasilnya.
select * from wlm_queue_state_vw; select * from wlm_query_state_vw;
Berikut ini adalah contoh hasil.
query | description | slots | mem | max_time | user_* | query_* | queued | executing | executed ------+-------------------------------------------+-------+-----+----------+--------+---------+--------+-----------+---------- 0 | (super user) and (query group: superuser) | 1 | 357 | 0 | false | false | 0 | 0 | 0 1 | (query group: test) | 2 | 627 | 0 | false | false | 1 | 1 | 2 2 | (suser group: admin) | 3 | 557 | 0 | false | false | 0 | 0 | 3 3 | (querytype:any) | 5 | 250 | 0 | false | false | 0 | 1 | 18 query | queue | slot_count | start_time | state | queue_time | exec_time ------+-------+------------+---------------------+---------------+------------+----------- 2286 | 1 | 2 | 2014-09-25 00:16:48 | QueuedWaiting | 3758950 | 0 2282 | 1 | 1 | 2014-09-25 00:16:33 | Executing | 0 | 19335850 2288 | 3 | 1 | 2014-09-25 00:16:52 | Executing | 0 | 666
Perhatikan bahwa kueri pertama menggunakan salah satu slot yang dialokasikan untuk antrian 1 untuk menjalankan kueri. Selain itu, perhatikan bahwa ada satu kueri yang menunggu dalam antrian (di mana
queued
1
dan distate
manaQueuedWaiting
). Setelah kueri pertama selesai, yang kedua mulai berjalan. Eksekusi ini terjadi karena kedua kueri dirutekan ke gruptest
kueri, dan kueri kedua harus menunggu slot yang cukup untuk mulai diproses.
Bagian 5: Membersihkan sumber daya Anda
Cluster Anda terus bertambah biaya selama itu berjalan. Setelah Anda menyelesaikan tutorial ini, kembalikan lingkungan Anda ke keadaan sebelumnya dengan mengikuti langkah-langkah di Temukan Sumber Daya Tambahan dan Atur Ulang Lingkungan Anda di Panduan Memulai Pergeseran Merah Amazon.
Untuk informasi lebih lanjut tentangWLM, lihatManajemen beban kerja.