Hologres V3.0 dan versi yang lebih baru mendukung fitur Query Queue, yang memproses permintaan secara berurutan, menyeimbangkan beban, serta mengelola resource untuk memastikan stabilitas sistem dan respons yang efisien—terutama dalam skenario konkurensi tinggi.
Cara kerja
Secara default, Hologres memproses permintaan ke suatu instans tanpa kontrol konkurensi. Koordinator mengalokasikan resource untuk mengeksekusi permintaan tersebut sesuai urutan kedatangan. Dengan fitur Query Queue, Hologres menggunakan classifier untuk mencocokkan permintaan SQL dengan aturan yang telah dikonfigurasi dan mengarahkannya ke query queue yang berbeda. Anda dapat mengonfigurasi setiap query queue dengan batas konkurensi maksimum. Ketika jumlah permintaan konkuren dalam suatu queue mencapai batas ini, permintaan berikutnya akan menunggu dalam antrian hingga resource komputasi tersedia.

Catatan
Untuk instans tujuan umum, konfigurasi seperti Query Queue dan pengoptimal diterapkan di tingkat instans. Untuk instans virtual warehouse, konfigurasi ini diterapkan di tingkat virtual warehouse. Jika suatu instans berisi beberapa database, pengaturan ini berlaku untuk semuanya.
Hanya instans General-purpose dan Virtual Warehouse Hologres V3.0 dan versi yang lebih baru yang mendukung fitur Query Queue.
CatatanJika instans Anda adalah V2.2 atau versi sebelumnya, upgrade instans atau hubungi dukungan teknis untuk melakukan upgrade. Untuk mengetahui cara mendapatkan dukungan, lihat Cara mendapatkan dukungan online tambahan.
Mulai dari Hologres V3.0.10, Anda dapat mengonfigurasi Query Queue agar mengarahkan semua kueri SQL-nya ke resource Serverless Computing. Pengaturan konkurensi dan antrian suatu query queue hanya berlaku untuk resource lokal. Kueri yang dijalankan pada resource Serverless Computing tidak dipengaruhi oleh pengaturan ini.
Setiap instans General-purpose dan setiap virtual warehouse dalam instans Virtual Warehouse memiliki query queue default bernama
default_queue, yang tidak memiliki batas konkurensi maksimum maupun batas ukuran antrian maksimum.Anda tidak dapat membuat classifier untuk
default_queue. Anda hanya dapat mengonfigurasi propertinya.default_queuemengelola semua permintaan yang tidak sesuai dengan query queue lainnya.
Setiap instans General-purpose dan setiap virtual warehouse dalam instans Virtual Warehouse mendukung hingga 10 query queue, termasuk
default_queue, dan setiap query queue mendukung hingga 10 classifier.Anda tidak dapat mengaktifkan fitur Query Queue secara independen untuk instans secondary read-only. Namun, aturan Query Queue dari instans primary juga berlaku untuknya.
Hologres hanya mengarahkan kueri dengan
engine_typeberupaHQE,PQE,SQE, atauHiveQEke query queue. Jenis kueri yang didukung meliputi pernyataan SELECT, INSERT, UPDATE, dan DELETE, serta pernyataan INSERT yang dihasilkan oleh perintah COPY dan CTAS.Kueri yang menggunakan Fixed Plan tidak diarahkan ke query queue dan tidak dikendalikan oleh pengaturannya, seperti batas konkurensi. Untuk informasi selengkapnya, lihat Mempercepat eksekusi SQL dengan Fixed Plan.
Sebuah classifier hanya dapat dimiliki oleh satu query queue, tetapi satu query queue dapat memiliki beberapa classifier.
Prosedur
Buat query queue
Sintaks
General-purpose
CALL hg_create_query_queue (query_queue_name, max_concurrency, max_queue_size);Virtual Warehouse
CALL hg_create_query_queue (warehouse_name, query_queue_name, max_concurrency, max_queue_size);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini dihilangkan, query queue dibuat di virtual warehouse koneksi saat ini secara default.CatatanParameter ini hanya wajib untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue. Nama harus unik dalam instans atau virtual warehouse saat ini.max_concurrency: Opsional. Konkurensi maksimum. Nilai default -1 menunjukkan tidak ada batas konkurensi. Nilai harus berada dalam rentang [-1, 2147483647).max_queue_size: Opsional. Jumlah maksimum kueri SQL yang dapat diantrekan. Nilai default -1 menunjukkan ukuran antrian tidak terbatas. Nilai harus berada dalam rentang [-1, 2147483647).
CatatanSaat membuat query queue, Anda hanya dapat mengonfigurasi properti
max_concurrencydanmax_queue_size. Untuk informasi tentang cara mengonfigurasi properti lainnya, lihat Konfigurasi properti query queue.Contoh
General-purpose
-- Buat query queue bernama insert_queue dan atur konkurensi maksimum menjadi 10. Parameter konkurensi tidak memerlukan tanda kutip tunggal. CALL hg_create_query_queue ('insert_queue', 10);Virtual Warehouse
-- Di virtual warehouse init_warehouse, buat query queue bernama insert_queue dan atur konkurensi maksimum menjadi 10. CALL hg_create_query_queue ('init_warehouse', 'insert_queue', 10);
Buat classifier
Sintaks
General-purpose
CALL hg_create_classifier (query_queue_name, classifier_name, priority);Virtual Warehouse
CALL hg_create_classifier (warehouse_name, query_queue_name, classifier_name, priority);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini dihilangkan, virtual warehouse koneksi saat ini digunakan secara default.CatatanParameter ini hanya wajib untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue tempat classifier tersebut berada.classifier_name: Wajib. Nama classifier. Nama harus unik dalam instans atau virtual warehouse saat ini.priority: Opsional. Prioritas pencocokan classifier. Nilai yang lebih besar menunjukkan prioritas lebih tinggi. Nilai default adalah 50. Nilai harus berada dalam rentang [1, 100]. Jika tidak ditentukan saat pembuatan, Anda dapat mengonfigurasinya nanti dengan mengikuti petunjuk di Konfigurasi properti classifier.CatatanClassifier dengan prioritas lebih tinggi dicocokkan terlebih dahulu.
Jika beberapa classifier memiliki prioritas yang sama, mereka dicocokkan berdasarkan urutan leksikografis nama query queue dan classifier-nya. Nama yang muncul lebih awal dalam urutan tersebut dicocokkan terlebih dahulu. Misalnya,
queue_a(classifier_1)memiliki prioritas lebih tinggi daripadaqueue_b(classifier_1).
Contoh
General-purpose
-- Di query queue insert_queue, buat classifier bernama classifier_insert dengan prioritas pencocokan 20. Parameter prioritas tidak memerlukan tanda kutip tunggal. CALL hg_create_classifier ('insert_queue', 'classifier_insert', 20);Virtual Warehouse
-- Di query queue insert_queue virtual warehouse init_warehouse, buat classifier bernama classifier_insert dengan prioritas pencocokan 20. CALL hg_create_classifier ('init_warehouse', 'insert_queue', 'classifier_insert', 20);
Konfigurasi aturan pencocokan classifier
Anda dapat mengonfigurasi aturan pencocokan untuk classifier guna mengarahkan kueri SQL ke query queue tertentu.
Sintaks
General-purpose
CALL hg_set_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);Virtual Warehouse
CALL hg_set_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
Parameter
Parameter
Deskripsi
warehouse_nameOpsional. Nama virtual warehouse. Jika parameter ini dihilangkan, virtual warehouse koneksi saat ini digunakan secara default.
CatatanParameter ini hanya wajib untuk Virtual Warehouse.
query_queue_nameWajib. Nama query queue.
classifier_nameWajib. Nama classifier yang akan dikonfigurasi.
condition_namedancondition_valueWajib. Properti kondisi. Properti berikut didukung:
user_name: UID akun saat ini.command_tag: Jenis permintaan. Nilai yang valid:INSERT,SELECT,UPDATE, danDELETE.Untuk efisiensi eksekusi, Hologres mengimplementasikan operasi
COPYsebagai operasiINSERT. Oleh karena itu, membatasi konkurensiINSERTjuga membatasi konkurensi penulisanCOPY.db_name: Nama database.engine_type: Mesin yang digunakan oleh permintaan. Nilai yang valid:HQE,PQE,SQE, danHiveQE. Kami merekomendasikan Anda menggunakan properti ini untuk Hologres V3.1.18 dan versi yang lebih baru.digest: Sidik jari SQL. Untuk informasi selengkapnya, lihat Sidik jari SQL.application_name: Aplikasi yang memulai kueri. Properti ini didukung di Hologres V3.0.9 dan versi yang lebih baru.storage_mode: Mode penyimpanan. Nilai yang valid:hot,cold. Kami merekomendasikan Anda menggunakan properti ini untuk Hologres V3.1.18 atau V3.1.8 dan versi yang lebih baru.write_table: Tabel tempat kueri menulis data. Formatnya adalah<db_name>.<schema_name>.<table_name>. Properti ini didukung di Hologres V3.1 dan versi yang lebih baru.read_table: Tabel tempat kueri membaca data. Properti ini didukung di Hologres V3.1 dan versi yang lebih baru.
Anda dapat menetapkan beberapa properti dalam satu classifier, dan setiap properti dapat memiliki beberapa aturan pencocokan. Mulai dari Hologres V3.1.18, hubungan logis antar properti dan aturan adalah sebagai berikut:
Jika classifier memiliki aturan pencocokan untuk beberapa properti:
Logika AND berlaku antar properti yang berbeda. Misalnya, jika classifier memiliki aturan untuk properti
user_namedancommand_tag, kueri harus memenuhi kedua aturan tersebut agar diarahkan ke classifier ini.Untuk membuat hubungan OR antar properti, gunakan beberapa classifier yang ditugaskan ke query queue yang sama. Kueri akan cocok jika memenuhi aturan salah satu classifier tersebut.
Dalam satu classifier, terdapat tiga jenis logika pencocokan untuk aturan yang ditetapkan pada properti yang sama:
Untuk
user_name,command_tag,db_name,digest, danapplication_name:Kumpulan nilai yang dikonfigurasi dalam aturan pencocokan untuk suatu properti adalah
set_a.Nilai properti yang sesuai dalam kueri adalah himpunan elemen tunggal,
set_b.Kueri cocok dengan aturan jika
set_bmerupakan subset dariset_a(set_b ⊆ set_a).
Untuk
storage_mode:Kumpulan nilai yang dikonfigurasi dalam aturan pencocokan untuk properti
storage_modeadalahset_a.Nilai properti yang sesuai dalam kueri membentuk himpunan,
set_b, yang dapat berupa {hot}, {cold}, atau {hot, cold}.Kueri cocok dengan aturan hanya jika
set_apersis sama denganset_b(set_a == set_b).
Untuk
engine_type,write_table, danread_table:Kumpulan nilai yang dikonfigurasi dalam aturan pencocokan untuk suatu properti adalah
set_a.Nilai properti yang sesuai dalam kueri membentuk himpunan,
set_b. Tidak ada batasan jumlah elemen dalam himpunan ini.Kueri cocok dengan aturan jika irisan
set_adanset_btidak kosong ((set_a ∩ set_b) != ∅).
CatatanKonfigurasikan satu properti kondisi per pemanggilan. Jika nilai kondisi bersifat case-sensitive, sertakan dalam tanda kutip ganda ("").
Untuk mencocokkan beberapa nilai untuk kondisi yang sama, panggil fungsi tersebut beberapa kali. Misalnya, untuk mencocokkan permintaan
SELECTdanINSERT, Anda harus mengeksekusi dua pernyataan SQL terpisah.
Contoh
Contoh berikut menggunakan instans virtual warehouse. Untuk instans tujuan umum, hilangkan parameter pertama,
warehouse_name. Pertama, buat query queue bernamatest_queueuntuk virtual warehouse defaultinit_warehouse:CALL hg_create_query_queue ('init_warehouse', 'test_queue');Contoh 1: Arahkan kueri ke query queue
test_queuejika kueri diajukan oleh penggunap4_123ataup4_456, ATAU jika sidik jarinya adalahxxxatauyyy.-- Hubungan OR antara properti `user_name` dan `digest` memerlukan dua classifier terpisah. -- Buat classifier bernama classifier_user dan tambahkan ke query queue test_queue. CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_user'); -- Tetapkan aturan pencocokan berdasarkan properti user_name. Kueri dari pengguna "p4_123" atau "p4_456" cocok dengan classifier ini. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'user_name', 'p4_123'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'user_name', 'p4_456'); -- Buat classifier bernama classifier_digest dan tambahkan ke query queue test_queue. CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_digest'); -- Tetapkan aturan pencocokan berdasarkan properti sidik jari SQL. Kueri dengan sidik jari SQL "xxx" atau "yyy" cocok dengan classifier ini. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_digest', 'digest', 'xxx'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_digest', 'digest', 'yyy');Contoh 2: Arahkan kueri ke query queue
test_queuejika kueri diprakarsai oleh aplikasixx_biDAN mengakses penyimpanan dingin maupun panas.-- Hubungan AND antara properti `application_name` dan `storage_mode` dicapai dengan mendefinisikan kedua properti dalam classifier yang sama. -- Buat classifier bernama classifier_3 dan tambahkan ke query queue test_queue. CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_3'); -- Tetapkan aturan pencocokan berdasarkan properti application_name. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'application_name', 'xx_bi'); -- Tetapkan aturan pencocokan berdasarkan properti mode penyimpanan. Dengan menetapkan "hot" dan "cold", Anda memastikan bahwa kueri harus mengakses penyimpanan panas dan dingin agar cocok dengan aturan ini. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'storage_mode', 'hot'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'storage_mode', 'cold');Contoh 3: Arahkan semua kueri yang mengakses penyimpanan dingin ke query queue
test_queue.-- Karena properti `storage_mode` memerlukan kecocokan eksak, Anda harus menggunakan dua classifier untuk mengarahkan semua kueri yang mengakses penyimpanan dingin. Kueri diarahkan jika cocok dengan salah satu classifier tersebut. -- Buat classifier bernama classifier_cold_1 dan tambahkan ke query queue test_queue. CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_1'); -- Kueri dengan storage_mode hanya 'cold' masuk ke antrian ini. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_1', 'storage_mode', 'cold'); -- Buat classifier bernama classifier_cold_2 dan tambahkan ke query queue test_queue. CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_2'); -- Kueri dengan storage_mode mencakup 'hot' dan 'cold' masuk ke antrian ini. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_2', 'storage_mode', 'hot'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_2', 'storage_mode', 'cold');Contoh 4: Arahkan semua kueri yang membaca dari tabel
aDAN menulis ke tabelbke query queuetest_queue.-- Hubungan AND antara properti `read_table` dan `write_table` dicapai dengan mendefinisikan aturan untuk kedua properti dalam classifier yang sama. -- Buat classifier bernama classifier_table dan tambahkan ke query queue test_queue. CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_table'); -- Tetapkan aturan pencocokan untuk properti read_table. Kueri cocok dengan aturan ini jika membaca dari tabel 'a', meskipun juga membaca dari tabel lain. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_table', 'read_table', 'db_name.schema_name.a'); -- Tetapkan aturan pencocokan untuk properti write_table. Kueri cocok dengan aturan ini jika menulis ke tabel 'b'. CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_table', 'write_table', 'db_name.schema_name.b');
Operasi tambahan
Kontrol kueri besar
Untuk mengontrol dampak kueri besar terhadap instans, Anda dapat menggunakan Query Queue untuk mengelola durasi eksekusi dan error kehabisan memori (OOM). Untuk kueri yang melebihi ambang batas durasi eksekusi atau OOM yang ditentukan, Anda dapat menghentikan permintaan tersebut atau menjalankannya ulang menggunakan resource Serverless Computing.
Hologres V3.0 hanya mendukung menjalankan ulang kueri SELECT. Mulai dari Hologres V4.1, pernyataan INSERT OVERWRITE native juga dapat dijalankan ulang menggunakan Serverless Computing jika mengalami timeout atau error kehabisan memori (OOM). Untuk mengaktifkan fitur ini, atur parameter GUC
hg_enable_query_queue_rerun_insert_overwrite_via_serverless. Prosedur tersimpanhg_insert_overwritetidak mendukung kemampuan menjalankan ulang ini. Saat kueri yang menggunakan FETCH untuk mengambil data dijalankan ulang, proses tersebut hanya mengikuti aturan Query Queue yang dikonfigurasi jika operasi FETCH gagal mengambil data apa pun. Hal ini memastikan akurasi hasil.Eksekusi kueri mencakup tiga fase:
optimization_cost(menghasilkan rencana eksekusi),start_query_cost(memulai kueri), danget_next_cost(mengeksekusi kueri). Untuk informasi selengkapnya, lihat Melihat dan menganalisis log kueri lambat. Fitur kontrol kueri besar pada Query Queue hanya mempertimbangkan durasi faseget_next_cost. Fitur ini tidak memperhitungkan waktu yang dihabiskan untuk menunggu resource atau lock.
Kontrol durasi eksekusi kueri
Anda dapat mengonfigurasi parameter big_query_execution_time_threshold_sec untuk menetapkan batas durasi eksekusi dalam detik (s). Nilai default adalah -1, yang menunjukkan tidak ada batas. Nilai harus berada dalam rentang [-1, 2147483647). Berikut beberapa contohnya:
Skenario 1: Menghentikan kueri berdurasi panjang
Kueri yang masuk ke antrian select_queue dieksekusi menggunakan resource instans saat ini. Jika durasi eksekusi kueri melebihi 10 detik, sistem secara otomatis menghentikannya.
CALL hg_set_query_queue_property ('select_queue', 'big_query_execution_time_threshold_sec', '10');Skenario 2: Menjalankan ulang kueri berdurasi panjang
Kueri yang masuk ke antrian select_queue dieksekusi menggunakan resource instans saat ini. Jika durasi eksekusi kueri melebihi 10 detik, sistem secara otomatis menghentikannya pada instans tersebut, lalu menjalankannya ulang menggunakan resource Serverless Computing.
CALL hg_set_query_queue_property ('select_queue', 'big_query_execution_time_threshold_sec', '10'); CALL hg_set_query_queue_property ('select_queue', 'enable_rerun_as_big_query_when_exceeded_execution_time_threshold', 'true'); CALL hg_set_query_queue_property ('select_queue', 'rerun_big_query_on_computing_resource', 'serverless');Catatanenable_rerun_as_big_query_when_exceeded_execution_time_threshold: Menentukan apakah kueri akan dijalankan ulang pada resource lain jika dihentikan karena melebihi batas durasi eksekusi. Nilai default adalah false.
rerun_big_query_on_computing_resource: Menentukan nama resource Serverless Computing yang digunakan untuk menjalankan ulang kueri.
Menjalankan ulang kueri besar yang menyebabkan error kehabisan memori (OOM)
Kueri yang masuk ke antrian select_queue dieksekusi menggunakan resource instans saat ini. Jika kueri menyebabkan error OOM dan menggunakan lebih dari 10 GB memori pada satu worker, sistem menjalankannya ulang menggunakan resource Serverless Computing. Parameter big_query_mem_threshold_when_oom_gb mengontrol ambang batas memori untuk kueri OOM. Nilai default adalah -1, yang menunjukkan tidak ada batas. Nilai harus berada dalam rentang [-1, 64). Contoh kodenya sebagai berikut:
CALL hg_set_query_queue_property ('select_queue', 'big_query_mem_threshold_when_oom_gb', '10'); CALL hg_set_query_queue_property ('select_queue', 'enable_rerun_as_big_query_when_oom_exceeded_mem_threshold', 'true'); CALL hg_set_query_queue_property ('select_queue', 'rerun_big_query_on_computing_resource', 'serverless');
Mengelola antrian kueri
Hapus antrian kueri
Sintaks
General-purpose
CALL hg_drop_query_queue (query_queue_name);Virtual Warehouse
CALL hg_drop_query_queue (warehouse_name, query_queue_name);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue.
Contoh
General-purpose
-- Hapus query queue insert_queue. CALL hg_drop_query_queue ('insert_queue');Virtual Warehouse
-- Di virtual warehouse init_warehouse, hapus query queue insert_queue. CALL hg_drop_query_queue ('init_warehouse', 'insert_queue');
Hapus properti query queue
Sintaks
General-purpose
CALL hg_remove_query_queue_property (query_queue_name, property_key);Virtual Warehouse
CALL hg_remove_query_queue_property (warehouse_name, query_queue_name, property_key);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue.
property_key: Wajib. Nama properti. Properti yang didukung meliputi
max_concurrency,max_queue_size, danqueue_timeout_ms. Untuk informasi selengkapnya tentang properti ini, lihat Konfigurasi properti query queue.
Contoh
General-purpose
-- Hapus properti konkurensi maksimum dari query queue insert_queue. CALL hg_remove_query_queue_property('insert_queue', 'max_concurrency'); -- Hapus properti ukuran antrian maksimum dari query queue insert_queue. CALL hg_remove_query_queue_property('insert_queue', 'max_queue_size'); -- Hapus properti durasi antrian maksimum dari query queue insert_queue. CALL hg_remove_query_queue_property('insert_queue', 'queue_timeout_ms');Virtual Warehouse
-- Di virtual warehouse init_warehouse, hapus properti konkurensi maksimum dari query queue insert_queue. CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency'); -- Di virtual warehouse init_warehouse, hapus pengaturan ukuran antrian maksimum dari query queue insert_queue. CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size'); -- Di virtual warehouse init_warehouse, hapus properti durasi antrian maksimum dari query queue insert_queue. CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms');
Lihat metadata query queue
Metadata query queue disimpan dalam tabel sistem hologres.hg_query_queues. Tabel berikut menjelaskan field utamanya.
Field | Tipe | Deskripsi |
warehouse_id | INT | ID virtual warehouse. Catatan Untuk General-purpose, field |
warehouse_name | TEXT | Nama virtual warehouse. Catatan Untuk General-purpose, field |
query_queue_name | TEXT | Nama query queue. |
property_key | TEXT | Nama properti. |
property_value | TEXT | Nilai properti. |
Konfigurasi properti query queue
Sintaks
General-purpose
CALL hg_set_query_queue_property (query_queue_name, property_key, property_value);Virtual Warehouse
CALL hg_set_query_queue_property (warehouse_name, query_queue_name, property_key, property_value);
Parameter
warehouse_name: Opsional. Nama virtual warehouse yang berisi query queue. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue yang akan dikonfigurasi.
property_key dan property_value: Wajib. Properti berikut didukung:
max_concurrency: Jumlah maksimum kueri konkuren. Nilai default adalah -1, yang menunjukkan tidak ada batas. Nilai harus berada dalam rentang [ -1 , 2147483647 ).
max_queue_size: Jumlah maksimum kueri yang dapat diantrekan. Nilai default adalah -1, yang menunjukkan ukuran antrian tidak terbatas. Nilai harus berada dalam rentang [ -1 , 2147483647 ).
queue_timeout_ms: Durasi antrian maksimum dalam milidetik (ms). Jika kueri menunggu dalam antrian lebih lama dari nilai ini, sistem secara otomatis menghentikannya. Nilai default adalah -1, yang menunjukkan tidak ada batas waktu. Nilai harus berada dalam rentang [ -1 , 2147483647 ).
Contoh
General-purpose
-- Atur konkurensi maksimum query queue insert_queue menjadi 15. CALL hg_set_query_queue_property('insert_queue', 'max_concurrency', '15'); -- Atur ukuran antrian maksimum query queue insert_queue menjadi 15. CALL hg_set_query_queue_property('insert_queue', 'max_queue_size', '15'); -- Atur durasi antrian maksimum query queue insert_queue menjadi 3.000 ms. CALL hg_set_query_queue_property('insert_queue', 'queue_timeout_ms', '3000');Virtual Warehouse
-- Di virtual warehouse init_warehouse, atur konkurensi maksimum query queue insert_queue menjadi 15. CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency', '15'); -- Di virtual warehouse init_warehouse, atur ukuran antrian maksimum query queue insert_queue menjadi 15. CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size', '15'); -- Di virtual warehouse init_warehouse, atur durasi antrian maksimum query queue insert_queue menjadi 3.000 ms. CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms', '3000');
Bersihkan permintaan yang sedang diantrekan
Sintaks
General-purpose
CALL hg_clear_query_queue (query_queue_name);Virtual Warehouse
CALL hg_clear_query_queue (warehouse_name, query_queue_name);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue.
Contoh
General-purpose
-- Bersihkan semua permintaan yang sedang diantrekan di query queue select_queue. CALL hg_clear_query_queue ('select_queue');Virtual Warehouse
-- Di virtual warehouse init_warehouse, bersihkan semua permintaan yang sedang diantrekan di query queue select_queue. CALL hg_clear_query_queue ('init_warehouse', 'select_queue');
Mengelola klasifier
Hapus pengklasifikasi
Sintaks
General-purpose
CALL hg_drop_classifier (query_queue_name, classifier_name);Virtual Warehouse
CALL hg_drop_classifier (warehouse_name, query_queue_name, classifier_name);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue yang berisi classifier.
classifier_name: Wajib. Nama classifier.
Contoh
General-purpose
-- Di query queue insert_queue, hapus classifier classifier_insert. CALL hg_drop_classifier ('insert_queue', 'classifier_insert');Virtual Warehouse
-- Di query queue insert_queue virtual warehouse init_warehouse, hapus classifier classifier_insert. CALL hg_drop_classifier ('init_warehouse', 'insert_queue', 'classifier_insert');
Hapus properti classifier
Sintaks
General-purpose
CALL hg_remove_classifier_property (query_queue_name, classifier_name, property_key);Virtual Warehouse
CALL hg_remove_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue.
classifier_name: Wajib. Nama classifier.
property_key: Wajib. Satu-satunya properti yang didukung adalah
priority. Untuk informasi selengkapnya tentang properti classifier, lihat Konfigurasi properti classifier.
Contoh
General-purpose
-- Di query queue insert_queue, hapus properti prioritas dari classifier classifier_insert. CALL hg_remove_classifier_property ('insert_queue', 'classifier_insert', 'priority');Virtual Warehouse
-- Di query queue insert_queue virtual warehouse init_warehouse, hapus properti prioritas dari classifier classifier_insert. CALL hg_remove_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert', 'priority');
Konfigurasi properti classifier
Sintaks
General-purpose
CALL hg_set_classifier_property (query_queue_name, classifier_name, property_key, property_value);Virtual Warehouse
CALL hg_set_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key, property_value);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue.
classifier_name: Wajib. Nama classifier.
property_key dan property_value: Wajib. Properti berikut didukung:
priority: Prioritas pencocokan classifier. Nilai yang lebih besar menunjukkan prioritas lebih tinggi. Nilai default adalah 50. Nilai harus berada dalam rentang [ 1 , 100 ].
CatatanClassifier dengan prioritas lebih tinggi dicocokkan terlebih dahulu.
Jika beberapa classifier memiliki prioritas yang sama, Hologres mencocokkannya berdasarkan urutan leksikografis nama query queue dan classifier-nya. Yang memiliki nama lebih awal dalam urutan leksikografis dicocokkan terlebih dahulu. Misalnya,
queue_a(classifier_1)memiliki prioritas lebih tinggi daripadaqueue_b(classifier_1).
Contoh
General-purpose
-- Di query queue insert_queue, atur prioritas classifier classifier_insert menjadi 30. CALL hg_set_classifier_property ('insert_queue', 'classifier_insert', 'priority', '30');Virtual Warehouse
-- Di query queue insert_queue virtual warehouse init_warehouse, atur prioritas classifier classifier_insert menjadi 30. CALL hg_set_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert','priority', '30');
Hapus kondisi classifier
Hapus nilai kondisi tertentu dari classifier
Sintaks
General-purpose
CALL hg_remove_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);Virtual Warehouse
CALL hg_remove_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue.
classifier_name: Wajib. Nama classifier.
condition_name dan condition_value: Wajib. Nama dan nilai kondisi yang akan dihapus. Nilai yang valid untuk
condition_namemeliputiuser_name,command_tag,db_name,engine_type,digest, danstorage_mode. Untuk informasi selengkapnya, lihat Konfigurasi kondisi classifier.
Contoh
General-purpose
-- Di query queue insert_queue, hapus kondisi command_tag 'INSERT' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'command_tag', 'INSERT'); -- Di query queue insert_queue, hapus kondisi user_name 'p4_12345' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'user_name', 'p4_12345'); -- Di query queue insert_queue, hapus kondisi db_name 'prd_db' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'db_name', 'prd_db'); -- Di query queue insert_queue, hapus kondisi engine_type 'HQE' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'engine_type', 'HQE'); -- Di query queue insert_queue, hapus kondisi digest 'md5edb3161000a003799a5d3f2656b70b4c' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c'); -- Di query queue insert_queue, hapus kondisi storage_mode 'hot' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'storage_mode', 'hot');Virtual Warehouse
-- Di query queue insert_queue virtual warehouse init_warehouse, hapus kondisi command_tag 'INSERT' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag', 'INSERT'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus kondisi user_name 'p4_12345' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name', 'p4_12345'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus kondisi db_name 'prd_db' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name', 'prd_db'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus kondisi engine_type 'HQE' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type', 'HQE'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus kondisi digest 'md5edb3161000a003799a5d3f2656b70b4c' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus kondisi storage_mode 'hot' dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode', 'hot');
Hapus semua kondisi untuk properti tertentu dari classifier
Sintaks
General-purpose
CALL hg_remove_classifier_rule_condition (query_queue_name, classifier_name, condition_name);Virtual Warehouse
CALL hg_remove_classifier_rule_condition (warehouse_name, query_queue_name, classifier_name, condition_name);
Parameter
warehouse_name: Opsional. Nama virtual warehouse. Jika parameter ini tidak ditentukan, secara default menggunakan virtual warehouse koneksi saat ini.
CatatanParameter ini hanya berlaku untuk Virtual Warehouse.
query_queue_name: Wajib. Nama query queue.
classifier_name: Wajib. Nama classifier.
condition_name: Wajib. Nama kondisi yang aturannya ingin dihapus. Nilai yang valid meliputi
user_name,command_tag,db_name,engine_type,digest, danstorage_mode. Untuk informasi selengkapnya, lihat Konfigurasi kondisi classifier.
Contoh
General-purpose
-- Di query queue insert_queue, hapus semua kondisi terkait command_tag dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'command_tag'); -- Di query queue insert_queue, hapus semua kondisi terkait user_name dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'user_name'); -- Di query queue insert_queue, hapus semua kondisi terkait db_name dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'db_name'); -- Di query queue insert_queue, hapus semua kondisi terkait engine_type dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'engine_type'); -- Di query queue insert_queue, hapus semua kondisi terkait digest dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'digest'); -- Di query queue insert_queue, hapus semua kondisi terkait storage_mode dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'storage_mode');Virtual Warehouse
-- Di query queue insert_queue virtual warehouse init_warehouse, hapus semua kondisi terkait command_tag dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus semua kondisi terkait user_name dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus semua kondisi terkait db_name dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus semua kondisi terkait engine_type dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus semua kondisi terkait digest dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest'); -- Di query queue insert_queue virtual warehouse init_warehouse, hapus semua kondisi terkait storage_mode dari classifier classifier_insert. CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode');
Melihat metadata pengklasifikasi
Metadata classifier disimpan dalam tabel sistem hologres.hg_classifiers. Tabel berikut menjelaskan field utamanya.
Field | Type | Deskripsi |
warehouse_id | INT | ID virtual warehouse. Catatan Untuk General-purpose, field |
warehouse_name | TEXT | Nama virtual warehouse. Catatan Untuk General-purpose, field |
query_queue_name | TEXT | Nama query queue. |
classifier_name | TEXT | Nama classifier. |
property_key | TEXT | Nama properti. |
property_value | TEXT | Nilai properti. |
Eksekusi kueri menggunakan Serverless Computing
Mulai dari Hologres V3.0.10, Anda dapat menentukan bahwa semua kueri dalam query queue dijalankan menggunakan resource Serverless Computing. Setelah dikonfigurasi, kueri dalam antrian tersebut dijalankan menggunakan resource Serverless berdasarkan urutan permintaan dan prioritas yang dikonfigurasi. Kueri tersebut tidak lagi dipengaruhi oleh pengaturan konkurensi atau mekanisme antrian query queue. Untuk informasi selengkapnya, lihat Panduan Pengguna Serverless Computing.
Jika Serverless Computing tidak didukung di zona instans Anda, kueri tetap dijalankan menggunakan resource komputasi instans tersebut.
Untuk instans tujuan umum
Sintaks
-- Tentukan bahwa semua kueri dalam antrian target dijalankan pada resource Serverless. CALL hg_set_query_queue_property('<query_queue_name>', 'computing_resource', 'serverless'); -- (Opsional) Atur prioritas untuk kueri dalam antrian target saat menggunakan resource Serverless. Nilai yang valid adalah 1 hingga 5. Nilai default adalah 3. CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');Parameter
query_queue_name: Wajib. Nama query queue.
priority: Prioritas. Nilai harus berada dalam rentang
[1, 5], dan nilai default adalah 3.
Contoh
-- Tentukan bahwa semua kueri dalam antrian target dijalankan pada resource Serverless. CALL hg_set_query_queue_property('insert_queue', 'computing_resource', 'serverless'); -- Atur prioritas menjadi 2 untuk kueri dalam antrian target saat menggunakan resource Serverless. CALL hg_set_query_queue_property('insert_queue', 'query_priority_when_using_serverless_computing', '2');
Untuk instans virtual warehouse
Sintaks
-- Tentukan bahwa semua kueri dalam antrian target dijalankan pada resource Serverless. CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless'); -- (Opsional) Atur prioritas untuk kueri dalam antrian target saat menggunakan resource Serverless. Nilai yang valid adalah 1 hingga 5. Nilai default adalah 3. CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');Parameter
warehouse_name: Wajib. Nama virtual warehouse.
query_queue_name: Wajib. Nama query queue.
priority: Wajib. Prioritas. Nilai harus berada dalam rentang
[1, 5], dan nilai default adalah 3.
Contoh
-- Tentukan bahwa semua kueri dalam antrian target dijalankan pada resource Serverless. CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'computing_resource', 'serverless'); -- Atur prioritas menjadi 2 untuk kueri dalam antrian target saat menggunakan resource Serverless. CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'query_priority_when_using_serverless_computing', '2');
Kasus penggunaan
Lihat query queue untuk SQL tertentu
Jalankan pernyataan EXPLAIN untuk melihat query queue mana yang digunakan oleh kueri SQL tertentu. Field Query Queue dalam output menunjukkan antrian dan classifier yang ditetapkan. Contohnya:
-- Buat query queue dengan konkurensi 10 dan ukuran antrian maksimum 20.
CALL hg_create_query_queue ('select_queue', 10, 20);
-- Buat classifier dan tambahkan aturan untuk properti command_tag.
CALL hg_create_classifier ('select_queue', 'classifier_1');
CALL hg_set_classifier_rule_condition_value ('select_queue', 'classifier_1', 'command_tag', 'select');
-- Gunakan EXPLAIN ANALYZE untuk melihat classifier dan query queue yang cocok.
EXPLAIN ANALYZE SELECT * FROM hg_stat_activity;Outputnya sebagai berikut:
QUERY PLAN
Gather (cost=0.00..14.96 rows=1000 width=408)
[4:1 id=100003 dop=1 time=16/16/16ms rows=142(142/142/142) mem=43/43/43KB open=0/0/0ms get_next=16/16/16ms]
-> Forward (cost=0.00..12.19 rows=1000 width=408)
[0:4 id=100002 dop=4 time=16/8/5ms rows=142(39/35/33) mem=6/6/6KB open=16/8/5ms get_next=0/0/0ms scan_rows=142(39/35/33)]
-> ExecuteExternalSQL on PQE (cost=0.00..10.04 rows=0 width=408)
" External SQL: SELECT "datid" AS c_d2adb610_0, "datname" AS c_d2adb760_1, "pid" AS c_d2adb8a0_2, "usesysid" AS c_d2adba10_3, "usename" AS c_d2adbb60_4, "application_name" AS c_d2adbd10_5, "client_addr" AS c_d2adbe80_6, "client_hostname" AS c_d2df1020_7, "client_port" AS c_d2df1190_8, "backend_start" AS c_d2df1300_9, "xact_start" AS c_d2df1470_10, "query_start" AS c_d2df15e0_11, "state_change" AS c_d2df1750_12, "wait_event_type" AS c_d2df18c0_13, "wait_event" AS c_d2df1a30_14, "state" AS c_d2df1b80_15, "backend_xid" AS c_d2df1cf0_16, "backend_xmin" AS c_d2df1e60_17, "query" AS c_d2df1fb0_18, "backend_type" AS c_d2df2120_19, "query_id" AS c_d2df2290_20, "transaction_id" AS c_d2df2400_21, "extend_info" AS c_d2df2570_22, "running_info" AS c_d2df26e0_23 FROM pg_catalog."hg_stat_activity""
Query id:[1001002491453065719]
Query Queue: init_warehouse.select_queue.classifier_1Lihat query queue untuk kueri aktif
Jalankan pernyataan SQL berikut untuk melihat detail kueri aktif, termasuk nama query queue yang ditetapkan, status saat ini, dan waktu antrian.
SELECT
running_info::json -> 'current_stage' ->> 'stage_name' AS stage_name,
running_info::json -> 'current_stage' ->> 'queue_time_ms' AS queue_time_ms,
running_info::json ->> 'query_queue' AS query_queue,
*
FROM
hg_stat_activity;Lihat query queue dari log kueri
Jalankan pernyataan SQL berikut untuk melihat query queue, status, dan waktu antrian untuk kueri historis dari log kueri. Field query_detail mencatat query queue yang digunakan. Untuk informasi selengkapnya tentang tabel sistem hologres.hg_query_log, lihat Tabel hg_query_log.
SELECT * FROM hologres.hg_query_log WHERE query_detail like '%query_queue = <warehouse_name>.<queue_name>%';-- Parameter warehouse_name hanya wajib untuk instans berbasis virtual warehouse.Field extended_info yang dikembalikan oleh pernyataan SQL di atas berisi informasi berikut:
serverless_computing_source: Menunjukkan sumber kueri yang dijalankan menggunakan resource Serverless Computing. Nilai yang valid:user_submit: Kueri secara eksplisit diajukan untuk dijalankan pada resource Serverless Computing, terlepas dari aturan query queue apa pun.query_queue: Kueri diarahkan ke query queue yang dikonfigurasi untuk menggunakan Serverless Computing.query_queue_rerun: Fitur kontrol kueri besar secara otomatis menjalankan ulang kueri pada resource Serverless Computing.
query_id_of_triggered_rerun: Field ini hanya muncul ketikaserverless_computing_sourcebernilaiquery_queue_rerundan berisi ID kueri asli dari kueri yang dijalankan ulang.
Buat query queue dengan aturan pencocokan berbeda
Contoh 1: Buat query queue untuk jenis permintaan tertentu, seperti
INSERT.Setelah antrian ini dibuat, classifier
classifier_1mencocokkan semua permintaanINSERTdan mengarahkannya ke query queueinsert_queue.-- Buat query queue dengan konkurensi 10 dan ukuran antrian maksimum 20. CALL hg_create_query_queue ('insert_queue', 10, 20); -- Buat classifier dan tambahkan aturan untuk properti command_tag. CALL hg_create_classifier ('insert_queue', 'classifier_1'); CALL hg_set_classifier_rule_condition_value ('insert_queue', 'classifier_1', 'command_tag', 'INSERT');Contoh 2: Buat query queue untuk pengguna tertentu, seperti
p4_123danp4_345.Setelah antrian dibuat, classifier
classifier_2mengarahkan permintaan SQL dari penggunap4_123danp4_345ke query queueuser_queue.-- Buat query queue dengan konkurensi 3 dan ukuran antrian maksimum tidak terbatas. CALL hg_create_query_queue ('user_queue', 3); CALL hg_set_query_queue_property('user_queue','max_queue_size', -1); -- Buat classifier dan atur aturan pencocokan user_name. CALL hg_create_classifier ('user_queue', 'classifier_2'); CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', 'p4_123'); CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', 'p4_345');CatatanJika Anda menentukan akun pengguna kustom, sertakan namanya dalam tanda kutip ganda (""). Misalnya,
CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', '"BASIC$xxx"');.Contoh 3: Buat query queue untuk database tertentu, seperti
testdanpostgres.Setelah antrian dibuat, classifier
classifier_3mengarahkan permintaan SQL untuk databasetestdanpostgreske query queuedb_queue.-- Buat query queue dengan konkurensi 5. CALL hg_create_query_queue ('db_queue', 5); -- Atur waktu antrian maksimum menjadi 600.000 ms. Jika kueri menunggu lebih lama dari waktu ini, error akan dilaporkan. CALL hg_set_query_queue_property ('db_queue', 'queue_timeout_ms', '600000'); -- Buat classifier dan tambahkan aturan untuk properti db_name. CALL hg_create_classifier ('db_queue', 'classifier_3'); CALL hg_set_classifier_rule_condition_value ('db_queue', 'classifier_3', 'db_name', 'test'); CALL hg_set_classifier_rule_condition_value ('db_queue', 'classifier_3', 'db_name', 'postgres');Contoh 4: Buat query queue untuk jenis mesin tertentu, seperti
HQE.Setelah antrian dibuat, classifier
classifier_4mengarahkan permintaan SQL terkait mesinHQEke query queuehqe_queue.-- Buat query queue dengan konkurensi 10. CALL hg_create_query_queue ('hqe_queue', 10); -- Buat classifier dan tambahkan aturan untuk properti engine_type. CALL hg_create_classifier ('hqe_queue', 'classifier_4'); CALL hg_set_classifier_rule_condition_value ('hqe_queue', 'classifier_4', 'engine_type', 'HQE');
Blokir semua permintaan dalam antrian
Untuk memblokir semua permintaan dalam antrian, atur konkurensi dan ukuran antrian maksimumnya menjadi 0. Contohnya:
CALL hg_set_query_queue_property ('insert_queue', 'max_concurrency', '0');
CALL hg_set_query_queue_property ('insert_queue', 'max_queue_size', '0');