All Products
Search
Document Center

Hologres:Query Queue

Last Updated:Apr 01, 2026

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.

image

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.

    Catatan

    Jika 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_queue mengelola 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_type berupa HQE, PQE, SQE, atau HiveQE ke 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.

      Catatan

      Parameter 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).

    Catatan

    Saat membuat query queue, Anda hanya dapat mengonfigurasi properti max_concurrency dan max_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.

      Catatan

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

      Catatan
      • Classifier 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 daripada queue_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_name

    Opsional. Nama virtual warehouse. Jika parameter ini dihilangkan, virtual warehouse koneksi saat ini digunakan secara default.

    Catatan

    Parameter ini hanya wajib untuk Virtual Warehouse.

    query_queue_name

    Wajib. Nama query queue.

    classifier_name

    Wajib. Nama classifier yang akan dikonfigurasi.

    condition_name dan condition_value

    Wajib. Properti kondisi. Properti berikut didukung:

    • user_name: UID akun saat ini.

    • command_tag: Jenis permintaan. Nilai yang valid: INSERT, SELECT, UPDATE, dan DELETE.

      Untuk efisiensi eksekusi, Hologres mengimplementasikan operasi COPY sebagai operasi INSERT. Oleh karena itu, membatasi konkurensi INSERT juga membatasi konkurensi penulisan COPY.

    • db_name: Nama database.

    • engine_type: Mesin yang digunakan oleh permintaan. Nilai yang valid: HQE, PQE, SQE, dan HiveQE. 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_name dan command_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, dan application_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_b merupakan subset dari set_a (set_b ⊆ set_a).

      • Untuk storage_mode:

        • Kumpulan nilai yang dikonfigurasi dalam aturan pencocokan untuk properti storage_mode adalah set_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_a persis sama dengan set_b (set_a == set_b).

      • Untuk engine_type, write_table, dan read_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_a dan set_b tidak kosong ((set_a ∩ set_b) != ∅).

    Catatan
    • Konfigurasikan 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 SELECT dan INSERT, 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 bernama test_queue untuk virtual warehouse default init_warehouse:

    CALL hg_create_query_queue ('init_warehouse', 'test_queue');
    • Contoh 1: Arahkan kueri ke query queue test_queue jika kueri diajukan oleh pengguna p4_123 atau p4_456, ATAU jika sidik jarinya adalah xxx atau yyy.

      -- 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_queue jika kueri diprakarsai oleh aplikasi xx_bi DAN 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 a DAN menulis ke tabel b ke query queue test_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.

Catatan
  • 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 tersimpan hg_insert_overwrite tidak 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), dan get_next_cost (mengeksekusi kueri). Untuk informasi selengkapnya, lihat Melihat dan menganalisis log kueri lambat. Fitur kontrol kueri besar pada Query Queue hanya mempertimbangkan durasi fase get_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');
      Catatan
      • enable_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.

      Catatan

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

      Catatan

      Parameter 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, dan queue_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_id bernilai 0.

warehouse_name

TEXT

Nama virtual warehouse.

Catatan

Untuk General-purpose, field warehouse_name kosong.

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.

      Catatan

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

      Catatan

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

      Catatan

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

      Catatan

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

      Catatan

      Parameter 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 ].

      Catatan
      • Classifier 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 daripada queue_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.

        Catatan

        Parameter 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_name meliputi user_name, command_tag, db_name, engine_type, digest, dan storage_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.

        Catatan

        Parameter 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, dan storage_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_id bernilai 0.

warehouse_name

TEXT

Nama virtual warehouse.

Catatan

Untuk General-purpose, field warehouse_name kosong.

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.

Catatan

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_1

Lihat 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.
Catatan

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 ketika serverless_computing_source bernilai query_queue_rerun dan 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_1 mencocokkan semua permintaan INSERT dan mengarahkannya ke query queue insert_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_123 dan p4_345.

    Setelah antrian dibuat, classifier classifier_2 mengarahkan permintaan SQL dari pengguna p4_123 dan p4_345 ke query queue user_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');
    Catatan

    Jika 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 test dan postgres.

    Setelah antrian dibuat, classifier classifier_3 mengarahkan permintaan SQL untuk database test dan postgres ke query queue db_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_4 mengarahkan permintaan SQL terkait mesin HQE ke query queue hqe_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');