全部产品
Search
文档中心

Hologres:Antrian Kueri

更新时间:Nov 10, 2025

Hologres V3.0 dan versi yang lebih baru mendukung fitur Antrean Kueri, yang menyediakan pemrosesan permintaan terurut, penyeimbangan beban, serta manajemen sumber daya. Fitur ini memastikan stabilitas sistem dan meningkatkan efisiensi tanggapan, terutama dalam skenario dengan konkurensi tinggi.

Perkenalan Fungsi

Secara default, ketika permintaan dikirimkan ke sebuah instans, tidak ada kontrol konkurensi yang dilakukan. Koordinator mesin menetapkan sumber daya untuk mengeksekusi permintaan tersebut. Dengan menggunakan fitur Query Queue, Hologres mencocokkan permintaan SQL dengan aturan yang dikonfigurasikan dalam kelas dan menetapkan permintaan tersebut ke antrian kueri yang berbeda. Anda dapat mengonfigurasi konkurensi maksimum untuk setiap antrian kueri. Ketika jumlah permintaan mencapai batas konkurensi maksimum, permintaan baru akan menunggu di antrian hingga sumber daya komputasi tersedia.

image

Perhatian

  • Untuk instans tujuan umum, konfigurasi seperti antrian kueri dan pengoptimal berlaku pada tingkat instans. Untuk instans berbasis kelompok komputasi, konfigurasi ini berlaku pada tingkat kelompok komputasi. Jika sebuah instans memiliki beberapa database, pengaturan antrian kueri dan pengoptimal berlaku untuk semua database.

  • Fitur Antrian Kueri hanya tersedia untuk instans General-purpose dan Compute Group-based Hologres V3.0 atau yang lebih baru.

    Catatan

    Jika instans Anda adalah V2.2 atau yang lebih lama, Anda dapat melakukan peningkatan instans atau bergabung dengan grup DingTalk Hologres untuk meminta peningkatan. Untuk bergabung dengan grup dukungan online DingTalk, lihat Bagaimana cara mendapatkan lebih banyak dukungan online?.

  • Mulai dari Hologres V3.0.10, Anda dapat mengonfigurasi semua kueri SQL dalam antrian kueri tertentu untuk dijalankan pada sumber daya Komputasi Serverless. Konfigurasi konkurensi dan mekanisme antrian dari antrian kueri hanya berlaku untuk sumber daya lokal. Kueri yang dijalankan pada sumber daya Komputasi Serverless tidak terpengaruh oleh konfigurasi konkurensi atau mekanisme antrian dari antrian kueri.

  • Setiap instans General-purpose dan setiap kelompok komputasi dalam instans Compute Group-based memiliki antrian kueri default bernama default_queue. Antrian ini tidak memberlakukan batasan pada konkurensi maksimum atau ukuran antrian maksimum.

    • Anda tidak dapat membuat klasifikasi untuk antrian kueri default_queue. Anda hanya dapat mengonfigurasi propertinya.

    • Antrian default_queue mengelola semua permintaan yang tidak dapat dicocokkan oleh antrian kueri lainnya.

  • Setiap instans General-purpose dan setiap kelompok komputasi dalam instans Compute Group-based dapat mendukung hingga 10 antrian kueri, termasuk default_queue. Setiap antrian kueri dapat memiliki hingga 10 klasifikasi.

  • Anda tidak dapat mengaktifkan fitur Antrian Kueri untuk instans sekunder read-only secara terpisah. Namun, aturan antrian kueri dari instans utama berlaku untuk instans sekunder.

  • Hanya kueri dengan engine_type HQE, PQE, SQE, atau HiveQE yang cocok dengan antrian kueri. Jenis kueri yang didukung meliputi SELECT, INSERT, UPDATE, DELETE, dan pernyataan INSERT yang dihasilkan oleh perintah seperti COPY dan CTAS.

  • Kueri Fixed Plan tidak masuk ke dalam antrian kueri dan tidak dikendalikan oleh konfigurasi antrian kueri seperti konkurensi. Untuk informasi lebih lanjut, lihat Gunakan Fixed Plan untuk mempercepat eksekusi SQL.

  • Sebuah klasifikasi hanya dapat dimiliki oleh satu antrian kueri, tetapi sebuah antrian kueri dapat memiliki beberapa klasifikasi.

Prosedur

Buat Antrian Kueri

  • Sintaksis

    • General-purpose instance

      CALL hg_create_query_queue (query_queue_name, max_concurrency, max_queue_size);
    • Compute Group-based instans

      CALL hg_create_query_queue (warehouse_name, query_queue_name, max_concurrency, max_queue_size);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, antrian kueri akan dibuat di kelompok komputasi dari koneksi saat ini secara default.

      Catatan

      Parameter ini hanya diperlukan untuk instans Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri. Nama tersebut harus unik dalam instans atau kelompok komputasi saat ini.

    • max_concurrency: Opsional. Konkurensi maksimum. Nilai default adalah -1, yang menunjukkan bahwa tidak ada batasan konkurensi. Nilai harus berada dalam rentang [-1, 2147483647).

    • max_queue_size: Opsional. Ukuran antrian maksimum. Parameter ini menentukan jumlah maksimum pernyataan SQL yang dapat diantrekan. Nilai default adalah -1, yang menunjukkan bahwa ukuran antrian tidak terbatas. Nilai harus berada dalam rentang [-1, 2147483647).

    Catatan

    Saat membuat antrian kueri, Anda hanya dapat mengonfigurasi properti max_concurrency dan max_queue_size. Untuk informasi tentang properti lainnya, lihat Konfigurasikan properti antrian kueri.

  • Contoh

    • General-purpose instance

      -- Buat antrian kueri bernama insert_queue dan atur konkurensi maksimum menjadi 10. Perhatikan bahwa parameter konkurensi tidak memerlukan tanda kutip tunggal.
      CALL hg_create_query_queue ('insert_queue', 10);
    • Compute Group-based instans

      -- Di kelompok komputasi init_warehouse, buat antrian kueri bernama insert_queue dan atur konkurensi maksimum menjadi 10.
      CALL hg_create_query_queue ('init_warehouse', 'insert_queue', 10);

Buat Pengklasifikasi

  • Sintaksis

    • General-Purpose Instans

      CALL hg_create_classifier (query_queue_name, classifier_name, priority);
    • Compute Group instans

      CALL hg_create_classifier (warehouse_name, query_queue_name, classifier_name, priority);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya berlaku untuk instans Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri tempat Anda ingin membuat pengklasifikasi.

    • classifier_name: Diperlukan. Nama pengklasifikasi. Nama tersebut harus unik dalam instans atau kelompok komputasi saat ini.

    • priority: Opsional. Prioritas pencocokan pengklasifikasi. Nilai yang lebih besar menunjukkan prioritas yang lebih tinggi. Nilai default adalah 50. Nilai harus berada dalam rentang [1, 100]. Jika Anda tidak menentukan parameter ini saat membuat pengklasifikasi, Anda dapat mengonfigurasinya nanti. Untuk informasi lebih lanjut, lihat Konfigurasikan properti pengklasifikasi.

      Catatan
      • Pengklasifikasi dengan prioritas lebih tinggi dicocokkan lebih awal.

      • Jika beberapa pengklasifikasi memiliki prioritas yang sama, mereka dicocokkan berdasarkan urutan leksikografis nama antrian kueri dan nama pengklasifikasi mereka. Pengklasifikasi dengan nama yang muncul pertama dalam urutan leksikografis dicocokkan terlebih dahulu. Sebagai contoh, queue_a(classifier_1) memiliki prioritas lebih tinggi daripada queue_b(classifier_1).

  • Contoh

    • General-purpose instans

      -- Di antrian kueri insert_queue, buat pengklasifikasi bernama classifier_insert dengan prioritas pencocokan 20. Perhatikan bahwa parameter prioritas tidak memerlukan tanda kutip tunggal.
      CALL hg_create_classifier ('insert_queue', 'classifier_insert', 20);
    • Compute Group instans

      -- Di antrian kueri insert_queue dari kelompok komputasi init_warehouse, buat pengklasifikasi bernama classifier_insert dengan prioritas pencocokan 20.
      CALL hg_create_classifier ('init_warehouse', 'insert_queue', 'classifier_insert', 20);

Konfigurasikan aturan pencocokan pengklasifikasi

Dalam antrian kueri, Anda dapat mengonfigurasi aturan pencocokan untuk pengklasifikasi agar sesuai dengan pernyataan SQL. Proses ini menentukan antrian kueri mana yang dimasuki oleh pernyataan SQL.

  • Sintaksis

    • General-Purpose instans

      CALL hg_set_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);
    • Compute group-based instans

      CALL hg_set_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
  • Deskripsi parameter

    Nama

    Deskripsi

    warehouse_name

    Opsional. Nama kelompok komputasi. Jika Anda tidak mengonfigurasi parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

    Catatan

    Anda harus mengonfigurasi parameter ini hanya untuk instans Compute Group-based.

    query_queue_name

    Diperlukan. Nama antrian kueri.

    classifier_name

    Diperlukan. Nama pengklasifikasi tempat Anda ingin menambahkan aturan pencocokan.

    condition_name dan condition_value

    Diperlukan. Properti kondisi yang didukung adalah:

    • user_name: UID akun saat ini.

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

      Untuk meningkatkan efisiensi eksekusi operasi COPY, Hologres mengimplementasikan operasi COPY menggunakan INSERT. Oleh karena itu, ketika konkurensi operasi INSERT dibatasi, konkurensi penulisan operasi COPY juga terpengaruh.

    • db_name: Nama database.

    • engine_type: Mesin yang digunakan oleh permintaan. Nilai valid: HQE, PQE, SQE, dan HiveQE. Kami merekomendasikan Anda menggunakan properti ini mulai dari Hologres V3.1.18.

    • digest: Sidik jari SQL. Untuk informasi lebih lanjut tentang sidik jari SQL, lihat Sidik jari SQL.

    • application_name: Aplikasi yang memulai kueri. Properti ini hanya didukung di Hologres V3.0.9 dan versi selanjutnya.

    • storage_mode: Mode penyimpanan. Nilai valid: hot dan cold. Kami merekomendasikan Anda menggunakan properti ini mulai dari Hologres V3.1.18 atau V3.1.8.

    • write_table: Tabel ke mana kueri menulis data. Formatnya adalah <db_name>.<schema_name>.<table_name>. Properti ini hanya didukung di Hologres V3.1 dan versi selanjutnya.

    • read_table: Tabel dari mana kueri membaca data. Properti ini hanya didukung di Hologres V3.1 dan versi selanjutnya.

    Anda dapat menetapkan beberapa properti dalam pengklasifikasi. Setiap properti dapat memiliki beberapa aturan pencocokan. Mulai dari Hologres V3.1.18, hubungan antara properti dan aturan adalah sebagai berikut:

    • Jika Anda menetapkan aturan pencocokan untuk beberapa properti dalam satu pengklasifikasi:

      • Hubungan AND ada di antara properti yang berbeda. Sebagai contoh, jika pengklasifikasi berisi aturan pencocokan untuk properti user_name dan command_tag, kueri harus memenuhi kedua aturan tersebut untuk ditugaskan ke pengklasifikasi ini.

      • Jika Anda memerlukan hubungan OR di antara beberapa properti, di mana kueri cocok jika memenuhi persyaratan salah satu properti, Anda harus membuat beberapa pengklasifikasi dan menetapkannya ke antrian kueri yang sama.

    • Ada tiga jenis hubungan untuk aturan pencocokan yang ditetapkan untuk properti yang sama dalam satu pengklasifikasi:

      • user_name, command_tag, db_name, digest, atau application_name:

        • Untuk properti tertentu, seperti user_name, himpunan nilai properti yang dikonfigurasi dalam aturan pencocokan adalah set_a.

        • Himpunan properti yang sesuai untuk kueri adalah set_b, yang hanya berisi satu nilai.

        • Kueri cocok dengan aturan jika operasi himpunan set_b ⊆ set_a benar.

      • storage_mode:

        • Untuk properti storage_mode, himpunan nilai properti yang dikonfigurasi dalam aturan pencocokan adalah set_a.

        • Himpunan properti yang sesuai untuk kueri adalah set_b, yang dapat memiliki salah satu dari tiga nilai yang mungkin: "hot", "cold", atau "hot, cold".

        • Kueri hanya cocok dengan aturan jika operasi himpunan set_a == set_b benar.

      • engine_type, write_table, atau read_table:

        • Untuk properti tertentu, seperti read_table, himpunan nilai properti yang dikonfigurasi dalam aturan pencocokan adalah set_a.

        • Himpunan properti yang sesuai untuk kueri adalah set_b, yang dapat memiliki sejumlah nilai, seperti beberapa tabel.

        • Kueri cocok dengan aturan jika operasi himpunan (set_a ∩ set_b) != ∅ benar.

    Catatan
    • Anda hanya dapat mengonfigurasi satu properti kondisi pada satu waktu. Jika nilai kondisi peka huruf besar-kecil, tutuplah dalam tanda kutip ganda ("").

    • Jika properti kondisi perlu mencocokkan beberapa nilai, Anda harus menetapkan properti tersebut beberapa kali. Sebagai contoh, jika pengklasifikasi perlu mencocokkan permintaan di mana command_tag adalah SELECT atau INSERT, Anda harus menjalankan dua pernyataan SQL untuk menetapkan aturan.

  • Contoh

    Contoh berikut menggunakan instans berbasis kelompok komputasi. Untuk instans tujuan umum, Anda dapat menghapus parameter input pertama. Buat antrian kueri bernama test_queue untuk kelompok komputasi default init_warehouse:

    CALL hg_create_query_queue ('init_warehouse', 'test_queue');
    • Contoh 1: Tetapkan kueri ke antrian kueri test_queue jika kueri dikirim oleh pengguna p4_123 atau p4_456, atau jika sidik jarinya adalah xxx atau yyy.

      -- Karena hubungan OR diperlukan antara properti pengguna dan sidik jari SQL, Anda harus mengonfigurasi dua pengklasifikasi.
      
      -- Buat pengklasifikasi bernama classifier_user dan sambungkan ke antrian kueri test_queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_user');
      -- Tetapkan aturan pencocokan berdasarkan properti pengguna. Kueri dari pengguna "p4_123" atau "p4_456" akan memenuhi pengklasifikasi 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 pengklasifikasi bernama classifier_digest dan sambungkan ke antrian kueri 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" akan memenuhi pengklasifikasi ini.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'digest', 'xxx');
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'digest', 'yyy');
    • Contoh 2: Tetapkan kueri ke antrian kueri test_queue jika kueri dimulai oleh aplikasi xx_bi dan mengakses penyimpanan dingin dan panas.

      -- Karena hubungan AND diperlukan antara properti aplikasi dan kelas penyimpanan, definisikan kedua properti tersebut dalam pengklasifikasi yang sama.
      
      -- Buat pengklasifikasi bernama classifier_3 dan sambungkan ke antrian kueri test_queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_3');
      -- Tetapkan aturan pencocokan berdasarkan properti aplikasi.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'application_name', 'xx_bi');
      -- Tetapkan aturan pencocokan berdasarkan kelas penyimpanan. Tetapkan aturan "hot" dan "cold". Kueri harus mengakses penyimpanan dingin dan panas untuk cocok.
      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: Tetapkan semua permintaan yang mengakses data penyimpanan dingin ke antrian kueri test_queue.

      -- Karena nilai kelas penyimpanan memerlukan kecocokan tepat, permintaan yang "mengakses data penyimpanan dingin apa pun" harus dipisah menjadi dua pengklasifikasi berikut. Permintaan hanya perlu cocok dengan salah satunya.
      
      -- Buat pengklasifikasi bernama classifier_cold_1 dan sambungkan ke antrian kueri test_queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_1');
      -- Kueri di mana 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 pengklasifikasi bernama classifier_cold_2 dan sambungkan ke antrian kueri test_queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_2');
      -- Kueri di mana 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: Tetapkan semua permintaan yang membaca dari tabel a dan menulis ke tabel b ke antrian kueri test_queue.

      -- Karena hubungan AND diperlukan antara properti tabel baca dan tabel tulis, definisikan kedua properti tersebut dalam pengklasifikasi yang sama.
      
      -- Buat pengklasifikasi bernama classifier_table dan sambungkan ke antrian kueri test_queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_table');
      -- Tetapkan aturan pencocokan berdasarkan tabel baca. Permintaan memenuhi aturan ini jika membaca data dari tabel a, terlepas apakah membaca dari tabel lain.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'read_table', 'db_name.schema_name.a');
      -- Tetapkan aturan pencocokan berdasarkan tabel tulis. Permintaan yang menulis ke tabel b memenuhi aturan ini.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'write_table', 'db_name.schema_name.b');

Operasi lainnya

Kontrol kueri besar

Untuk secara efektif mengendalikan dampak kueri besar pada sebuah instans, Anda dapat menggunakan antrian kueri untuk mengelola dan mengendalikan durasi eksekusi serta kesalahan kehabisan memori (OOM). Untuk kueri yang melebihi durasi eksekusi atau ambang batas OOM yang ditentukan, Anda dapat memilih untuk menghentikan permintaan atau menjalankannya kembali menggunakan sumber daya Komputasi Tanpa Server.

Catatan
  • Hologres V3.0 hanya mendukung menjalankan ulang kueri SELECT. Jika Anda menggunakan FETCH untuk mengambil data saat menjalankan ulang kueri, kueri akan dijalankan ulang berdasarkan aturan antrian kueri yang dikonfigurasikan hanya ketika FETCH gagal mengambil data apa pun. Proses ini memastikan akurasi hasil.

  • Eksekusi aktual dari sebuah kueri mencakup tiga bagian: optimization_cost (membuat rencana eksekusi), start_query_cost (memulai kueri), dan get_next_cost (mengeksekusi kueri). Untuk informasi lebih lanjut, lihat Lihat dan analisis log kueri lambat. Fitur kontrol kueri besar dari Query Queue hanya mempertimbangkan durasi bagian get_next_cost. Tidak memperhitungkan waktu yang dihabiskan menunggu sumber daya atau kunci.

  • Kontrol durasi eksekusi

    Anda dapat mengonfigurasi parameter big_query_execution_time_threshold_sec untuk menetapkan durasi eksekusi dalam detik (s). Nilai default adalah -1, yang menunjukkan tidak ada batasan. Nilai harus berada dalam rentang [-1, 2147483647). Contoh berikut menunjukkan cara mengendalikan kueri berdasarkan durasi eksekusi:

    • Skenario 1: Hentikan kueri yang melebihi durasi eksekusi

      Kueri yang masuk ke antrian select_queue dieksekusi menggunakan sumber daya dari instans saat ini. Jika durasi eksekusi melebihi 10 detik, kueri secara otomatis dihentikan.

      CALL hg_set_query_queue_property ('select_queue', 'big_query_execution_time_threshold_sec', '10');
    • Skenario 2: Jalankan ulang kueri yang melebihi durasi eksekusi

      Kueri yang masuk ke antrian select_queue dieksekusi menggunakan sumber daya dari instans saat ini. Jika durasi eksekusi melebihi 10 detik, kueri secara otomatis dihentikan pada sumber daya instans dan dijalankan ulang menggunakan sumber daya Komputasi Tanpa Server.

      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 akan menjalankan ulang permintaan SQL menggunakan sumber daya lain setelah permintaan dihentikan karena melebihi durasi eksekusi. Nilai default adalah false.

      • rerun_big_query_on_computing_resource: Menentukan nama sumber daya Komputasi Tanpa Server yang digunakan untuk menjalankan ulang permintaan SQL.

  • Jalankan ulang kueri besar yang menyebabkan kesalahan OOM

    Kueri yang masuk ke antrian select_queue dieksekusi menggunakan sumber daya dari instans saat ini. Jika kueri menyebabkan kesalahan OOM dan menggunakan lebih dari 10 GB memori pada pekerja tunggal, kueri dijalankan ulang menggunakan sumber daya Komputasi Tanpa Server. Parameter big_query_mem_threshold_when_oom_gb mengontrol ambang batas memori untuk kueri OOM. Nilai default adalah -1, yang menunjukkan tidak ada batasan. Nilai harus berada dalam rentang [-1, 64). Kode berikut memberikan contoh:

    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');

Manajemen Antrian Kueri

Hapus antrian kueri

  • Sintaksis

    • General-Purpose instans

      CALL hg_drop_query_queue (query_queue_name);
    • Compute Group instans

      CALL hg_drop_query_queue (warehouse_name, query_queue_name);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya berlaku untuk instans berbasis Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri.

  • Contoh

  • General-purpose Instans

    -- Hapus antrian kueri insert_queue.
    CALL hg_drop_query_queue ('insert_queue');
  • Compute Group instans

    -- Dalam kelompok komputasi init_warehouse, hapus antrian kueri insert_queue.
    CALL hg_drop_query_queue ('init_warehouse', 'insert_queue');

Hapus properti antrian kueri

  • Sintaksis

    • General-purpose instance

      CALL hg_remove_query_queue_property (query_queue_name, property_key);
    • Compute Group instans

      CALL hg_remove_query_queue_property (warehouse_name, query_queue_name, property_key);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya berlaku untuk instans berbasis Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri.

    • property_key: Diperlukan. Nama properti. Properti yang didukung adalah max_concurrency, max_queue_size, dan queue_timeout_ms. Untuk informasi lebih lanjut tentang properti, lihat Konfigurasikan properti antrian kueri.

  • Contoh

    • General-Purpose Instans

      -- Hapus properti konkurensi maksimum dari antrian kueri insert_queue.
      CALL hg_remove_query_queue_property('insert_queue', 'max_concurrency');
      
      -- Hapus properti ukuran antrian maksimum dari antrian kueri insert_queue.
      CALL hg_remove_query_queue_property('insert_queue', 'max_queue_size');
      
      -- Hapus properti waktu antrian maksimum dari antrian kueri insert_queue.
      CALL hg_remove_query_queue_property('insert_queue', 'queue_timeout_ms');
    • Instans berbasis Compute Group-based

      -- Dalam kelompok komputasi init_warehouse, hapus properti konkurensi maksimum dari antrian kueri insert_queue.
      CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency');
      
      -- Dalam kelompok komputasi init_warehouse, hapus pengaturan ukuran antrian maksimum dari antrian kueri insert_queue.
      CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size');
      
      -- Dalam kelompok komputasi init_warehouse, hapus properti waktu antrian maksimum dari antrian kueri insert_queue.
      CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms');

Lihat metadata antrian kueri

Metadata antrian kueri disimpan dalam tabel sistem hologres.hg_query_queues. Bidang utama dijelaskan dalam tabel berikut:

Nama bidang

Tipe bidang

Deskripsi

warehouse_id

INT

ID kelompok komputasi.

Catatan

Untuk instans General-purpose, nilai bidang warehouse_id adalah 0.

warehouse_name

TEXT

Nama kelompok komputasi.

Catatan

Untuk instans General-purpose, warehouse_name kosong.

query_queue_name

TEXT

Nama antrian kueri.

property_key

TEXT

Nama properti.

property_value

TEXT

Nilai properti.

Konfigurasikan properti antrian kueri

  • Sintaksis

    • General-Purpose instans

      CALL hg_set_query_queue_property (query_queue_name, property_key, property_value);
    • Compute Group instans

      CALL hg_set_query_queue_property (warehouse_name, query_queue_name, property_key, property_value);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi yang ingin Anda konfigurasikan properti antrian kuerinya. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya diperlukan untuk instans berbasis Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri yang ingin Anda konfigurasikan propertinya.

    • property_key dan property_value: Diperlukan. Properti yang didukung dijelaskan sebagai berikut:

      • max_concurrency: Konkurensi maksimum. Nilai default adalah -1, yang menunjukkan tidak ada batasan konkurensi. Nilai harus berada dalam rentang [-1, 2147483647).

      • max_queue_size: Ukuran antrian maksimum. Parameter ini menentukan jumlah maksimum pernyataan SQL yang dapat diantrekan. Nilai default adalah -1, yang menunjukkan bahwa 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 selama periode lebih lama dari nilai ini, kueri secara otomatis dihentikan. Nilai default adalah -1, yang menunjukkan tidak ada batasan pada durasi antrian. Nilai harus berada dalam rentang [-1, 2147483647).

  • Contoh

    • General-Purpose instans

      -- Tetapkan konkurensi maksimum dari antrian kueri insert_queue menjadi 15.
      CALL hg_set_query_queue_property('insert_queue', 'max_concurrency', '15');
      
      -- Tetapkan ukuran antrian maksimum dari antrian kueri insert_queue menjadi 15.
      CALL hg_set_query_queue_property('insert_queue', 'max_queue_size', '15');
      
      -- Tetapkan waktu antrian maksimum dari antrian kueri insert_queue menjadi 3000 ms.
      CALL hg_set_query_queue_property('insert_queue', 'queue_timeout_ms', '3000');
    • Instans tipe Compute Group Type

      -- Dalam kelompok komputasi init_warehouse, tetapkan konkurensi maksimum dari antrian kueri insert_queue menjadi 15.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency', '15');
      
      -- Dalam kelompok komputasi init_warehouse, tetapkan ukuran antrian maksimum dari antrian kueri insert_queue menjadi 15.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size', '15');
      
      -- Dalam kelompok komputasi init_warehouse, tetapkan waktu antrian maksimum dari antrian kueri insert_queue menjadi 3000 ms.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms', '3000');

Bersihkan permintaan yang diantrekan dalam antrian kueri tertentu

  • Sintaksis

    • General-purpose instance

      CALL hg_clear_query_queue (query_queue_name);
    • Compute group instans

      CALL hg_clear_query_queue (warehouse_name, query_queue_name);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya diperlukan untuk instans berbasis Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri.

  • Contoh

    • General-purpose instance

      -- Bersihkan semua permintaan yang diantrekan dalam antrian kueri select_queue.
      CALL hg_clear_query_queue ('select_queue');
    • Compute Group instans

      -- Dalam kelompok komputasi init_warehouse, bersihkan semua permintaan yang diantrekan dalam antrian kueri select_queue.
      CALL hg_clear_query_queue ('init_warehouse', 'select_queue');

Manajemen Pengklasifikasi

Hapus classifier

  • Sintaksis

    • General-purpose

      CALL hg_drop_classifier (query_queue_name, classifier_name);
    • Compute-group-based

      CALL hg_drop_classifier (warehouse_name, query_queue_name, classifier_name);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya diperlukan untuk instans berbasis Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri untuk mana Anda ingin membuat classifier.

    • classifier_name: Diperlukan. Nama classifier.

  • Contoh

    • General-purpose instance

      -- Dalam antrian kueri insert_queue, hapus classifier_insert classifier.
      CALL hg_drop_classifier ('insert_queue', 'classifier_insert');
    • Compute Group instans

      -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus classifier_insert classifier.
      CALL hg_drop_classifier ('init_warehouse', 'insert_queue', 'classifier_insert');

Hapus properti classifier

  • Sintaksis

    • General-purpose instance

      CALL hg_remove_classifier_property (query_queue_name, classifier_name, property_key);
    • Compute Group instans

      CALL hg_remove_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya diperlukan untuk instans berbasis Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri.

    • classifier_name: Diperlukan. Nama classifier.

    • property_key: Diperlukan. Properti yang didukung adalah prioritas. Untuk informasi lebih lanjut tentang properti classifier, lihat Konfigurasikan properti classifier.

  • Contoh

    • General-Purpose instans

      -- Dalam antrian kueri insert_queue, hapus properti prioritas dari classifier_insert classifier.
      CALL hg_remove_classifier_property ('insert_queue', 'classifier_insert', 'priority');
    • Compute group instans

      -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus properti prioritas dari classifier_insert classifier.
      CALL hg_remove_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert', 'priority');

Konfigurasikan properti classifier

  • Sintaksis

    • General-purpose instance

      CALL hg_set_classifier_property (query_queue_name, classifier_name, property_key, property_value);
    • Compute Group-based instans

      CALL hg_set_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key, property_value);
  • Deskripsi parameter

    • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

      Catatan

      Parameter ini hanya diperlukan untuk instans berbasis Compute Group-based.

    • query_queue_name: Diperlukan. Nama antrian kueri.

    • classifier_name: Diperlukan. Nama classifier.

    • property_key dan property_value: Diperlukan. Properti yang didukung dijelaskan sebagai berikut:

      prioritas: Prioritas pencocokan classifier. Nilai yang lebih besar menunjukkan prioritas yang lebih tinggi. Nilai default adalah 50. Nilai harus berada dalam rentang [1, 100].

      Catatan
      • Classifier dengan prioritas lebih tinggi dicocokkan lebih awal.

      • Jika beberapa classifier memiliki prioritas yang sama, mereka dicocokkan berdasarkan urutan leksikografis dari nama antrian kueri dan nama classifier mereka. Classifier dengan nama yang muncul pertama dalam urutan leksikografis dicocokkan terlebih dahulu. Misalnya, queue_a(classifier_1) memiliki prioritas lebih tinggi daripada queue_b(classifier_1).

  • Contoh

    • General-purpose instance

      -- Dalam antrian kueri insert_queue, tetapkan prioritas classifier_insert classifier menjadi 30.
      CALL hg_set_classifier_property ('insert_queue', 'classifier_insert', 'priority', '30');
    • Compute group-based instans

      -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, tetapkan prioritas classifier_insert classifier menjadi 30.
      CALL hg_set_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert','priority', '30');

Hapus aturan pencocokan classifier

  • Hapus aturan pencocokan untuk properti kondisi tertentu (condition_name) dari classifier

    • Sintaksis

      • General-purpose instance

        CALL hg_remove_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);
      • Compute Group instans

        CALL hg_remove_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
    • Deskripsi parameter

      • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

        Catatan

        Parameter ini hanya diperlukan untuk instans berbasis Compute Group-based.

      • query_queue_name: Diperlukan. Nama antrian kueri.

      • classifier_name: Diperlukan. Nama classifier.

      • condition_name dan condition_value: Diperlukan. Nama dan nilai properti kondisi yang ingin Anda hapus. Properti kondisi yang didukung adalah user_name, command_tag, db_name, engine_type, digest, dan storage_mode. Untuk informasi lebih lanjut tentang properti kondisi untuk aturan pencocokan classifier, lihat Konfigurasikan Aturan Pencocokan Classifier.

    • Contoh

      • General-purpose instance

        -- Dalam antrian kueri insert_queue, hapus aturan pencocokan di mana command_tag adalah INSERT dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'command_tag', 'INSERT');
        
        -- Dalam antrian kueri insert_queue, hapus aturan pencocokan di mana user_name adalah p4_12345 dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'user_name', 'p4_12345');
        
        -- Dalam antrian kueri insert_queue, hapus aturan pencocokan di mana db_name adalah prd_db dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'db_name', 'prd_db');
        
        -- Dalam antrian kueri insert_queue, hapus aturan pencocokan di mana engine_type adalah HQE dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'engine_type', 'HQE');
        
        -- Dalam antrian kueri insert_queue, hapus aturan pencocokan di mana digest adalah md5edb3161000a003799a5d3f2656b70b4c dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c');
        
        -- Dalam antrian kueri insert_queue, hapus aturan pencocokan di mana storage_mode adalah hot dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'storage_mode', 'hot');
      • Compute Group instans

        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus aturan pencocokan di mana command_tag adalah INSERT dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag', 'INSERT');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus aturan pencocokan di mana user_name adalah p4_12345 dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name', 'p4_12345');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus aturan pencocokan di mana db_name adalah prd_db dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name', 'prd_db');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus aturan pencocokan di mana engine_type adalah HQE dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type', 'HQE');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus aturan pencocokan di mana digest adalah md5edb3161000a003799a5d3f2656b70b4c dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus aturan pencocokan di mana storage_mode adalah hot dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode', 'hot');
  • Hapus semua aturan pencocokan untuk properti kondisi tertentu (condition_name) dari classifier

    • Sintaksis

      • General-Purpose instans

        CALL hg_remove_classifier_rule_condition (query_queue_name, classifier_name, condition_name);
      • Compute Group-based instans

        CALL hg_remove_classifier_rule_condition (warehouse_name, query_queue_name, classifier_name, condition_name);
    • Deskripsi parameter

      • warehouse_name: Opsional. Nama kelompok komputasi. Jika Anda tidak menentukan parameter ini, kelompok komputasi dari koneksi saat ini digunakan secara default.

        Catatan

        Parameter ini hanya diperlukan untuk instans berbasis Compute Group-based.

      • query_queue_name: Diperlukan. Nama antrian kueri.

      • classifier_name: Diperlukan. Nama classifier.

      • condition_name: Diperlukan. Nama properti kondisi yang ingin Anda hapus. Properti kondisi yang didukung adalah user_name, command_tag, db_name, engine_type, digest, dan storage_mode. Untuk informasi lebih lanjut tentang properti kondisi untuk aturan pencocokan classifier, lihat Konfigurasikan Aturan Pencocokan Classifier.

    • Contoh

      • General-Purpose instans

        -- Dalam antrian kueri insert_queue, hapus semua aturan pencocokan terkait command_tag dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'command_tag');
        
        -- Dalam antrian kueri insert_queue, hapus semua aturan pencocokan terkait user_name dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'user_name');
        
        -- Dalam antrian kueri insert_queue, hapus semua aturan pencocokan terkait db_name dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'db_name');
        
        -- Dalam antrian kueri insert_queue, hapus semua aturan pencocokan terkait engine_type dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'engine_type');
        
        -- Dalam antrian kueri insert_queue, hapus semua aturan pencocokan terkait digest dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'digest');
        
        -- Dalam antrian kueri insert_queue, hapus semua aturan pencocokan terkait storage_mode dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'storage_mode');
      • Compute Group instans

        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus semua aturan pencocokan terkait command_tag dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus semua aturan pencocokan terkait user_name dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus semua aturan pencocokan terkait db_name dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus semua aturan pencocokan terkait engine_type dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus semua aturan pencocokan terkait digest dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest');
        
        -- Dalam antrian kueri insert_queue dari kelompok komputasi init_warehouse, hapus semua aturan pencocokan terkait storage_mode dari classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode');

Lihat metadata classifier

Metadata classifier disimpan dalam tabel sistem hologres.hg_classifiers. Bidang utama dijelaskan dalam tabel berikut:

Bidang

Tipe bidang

Deskripsi

warehouse_id

INT

ID kelompok komputasi.

Catatan

Untuk instans General-purpose, nilai bidang warehouse_id adalah 0.

warehouse_name

TEXT

Nama kelompok komputasi.

Catatan

Untuk instans General-purpose, warehouse_name kosong.

query_queue_name

TEXT

Nama antrian kueri.

classifier_name

TEXT

Nama pengklasifikasi.

property_key

TEXT

Nama properti.

property_value

TEXT

Nilai properti.

Gunakan Sumber Daya Komputasi Tanpa Server untuk mengeksekusi kueri dalam antrian kueri

Mulai dari Hologres V3.0.10, Anda dapat menentukan bahwa semua kueri dalam antrian kueri tertentu dieksekusi oleh Sumber Daya Komputasi Tanpa Server. Setelah dikonfigurasi, kueri dalam antrian meminta Sumber Daya Tanpa Server untuk eksekusi berdasarkan urutan permintaan dan prioritas yang telah dikonfigurasi. Mereka tidak lagi dipengaruhi oleh konfigurasi konkurensi atau mekanisme antrian dari antrian kueri. Untuk informasi lebih lanjut, lihat Panduan Pengguna Komputasi Tanpa Server.

Catatan

Jika Komputasi Tanpa Server tidak didukung di zona tempat Instans Anda berada, kueri akan dieksekusi menggunakan sumber daya komputasi dari instans.

  • Instans Tujuan Umum

    • Sintaksis

      -- Atur semua kueri dalam antrian target untuk dijalankan pada Sumber Daya Tanpa Server.
      CALL hg_set_query_queue_property('<query_queue_name>', 'computing_resource', 'serverless');
      
      -- (Opsional) Atur prioritas untuk kueri dalam antrian target saat menggunakan Sumber Daya Tanpa Server. Nilai yang didukung adalah 1-5. Defaultnya adalah 3.
      CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');
    • Deskripsi Parameter

      • query_queue_name: Wajib. Nama antrian kueri.

      • priority: Prioritas. Nilai defaultnya adalah 3. Nilainya harus dalam rentang [1, 5].

    • Contoh

      -- Atur semua kueri dalam antrian target untuk dijalankan pada Sumber Daya Tanpa Server.
      CALL hg_set_query_queue_property('insert_queue', 'computing_resource', 'serverless');
      
      -- Atur prioritas menjadi 2 untuk kueri dalam antrian target saat menggunakan Sumber Daya Tanpa Server.
      CALL hg_set_query_queue_property('insert_queue', 'query_priority_when_using_serverless_computing', '2');
  • Instans Berbasis Kelompok Komputasi

    • Sintaksis

      -- Atur semua kueri dalam antrian target untuk dijalankan pada Sumber Daya Tanpa Server.
      CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless');
      
      -- (Opsional) Atur prioritas untuk kueri dalam antrian target saat menggunakan Sumber Daya Tanpa Server. Nilai yang didukung adalah 1-5. Defaultnya adalah 3.
      CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');
    • Deskripsi Parameter

      • warehouse_name: Wajib. Nama kelompok komputasi.

      • query_queue_name: Wajib. Nama antrian kueri.

      • priority: Wajib. Prioritas. Nilai defaultnya adalah 3. Nilainya harus dalam rentang [1, 5].

    • Contoh

      -- Atur semua kueri dalam antrian target untuk dijalankan pada Sumber Daya Tanpa Server.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'computing_resource', 'serverless');
      
      -- Atur prioritas menjadi 2 untuk kueri dalam antrian target saat menggunakan Sumber Daya Tanpa Server.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'query_priority_when_using_serverless_computing', '2');

Skenario umum

Lihat antrian kueri yang digunakan oleh pernyataan SQL tertentu

Anda dapat menggunakan EXPLAIN untuk melihat antrian kueri yang digunakan oleh pernyataan SQL tertentu. Bidang Antrian Kueri menunjukkan antrian kueri yang digunakan. Kode berikut memberikan contoh.

-- Buat antrian kueri dengan konkurensi 10 dan ukuran antrian maksimum 20.
CALL hg_create_query_queue ('select_queue', 10, 20);
-- Buat pengklasifikasi dan sambungkan 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 pengklasifikasi dan antrian kueri yang cocok dengan kueri.
EXPLAIN ANALYZE SELECT * FROM hg_stat_activity;

Hasil berikut dikembalikan.

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]
        ->  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 antrian kueri yang digunakan oleh pernyataan SQL dalam kueri aktif

Anda dapat menjalankan pernyataan SQL berikut untuk melihat informasi seperti nama antrian kueri, status saat ini, dan waktu antrian untuk pernyataan SQL dalam kueri aktif.

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 antrian kueri yang digunakan oleh pernyataan SQL dalam Log Kueri

Anda dapat menjalankan pernyataan SQL berikut untuk melihat antrian kueri, status saat ini, dan waktu antrian untuk pernyataan SQL dalam Log Kueri. Bidang query_detail mencatat antrian kueri yang digunakan oleh pernyataan SQL. Untuk informasi lebih lanjut tentang tabel sistem hologres.hg_query_log, lihat Lihat Tabel query_log.

SELECT * FROM hologres.hg_query_log WHERE query_detail like '%query_queue = <warehouse_name>.<queue_name>%';-- Anda harus mengonfigurasi parameter warehouse_name hanya untuk instans berbasis Compute group.
Catatan

Bidang extended_info yang dikembalikan oleh pernyataan SQL sebelumnya berisi informasi berikut:

  • serverless_computing_source: Menunjukkan sumber dari pernyataan SQL yang dijalankan menggunakan sumber daya Komputasi Tanpa Server. Nilai valid adalah sebagai berikut:

    • user_submit: Pernyataan SQL yang ditentukan untuk dijalankan pada sumber daya Tanpa Server, independen dari fitur Antrian Kueri.

    • query_queue: Semua pernyataan SQL dalam antrian kueri yang ditentukan dijalankan oleh sumber daya Tanpa Server.

    • query_queue_rerun: Pernyataan SQL yang secara otomatis dijalankan ulang pada sumber daya Tanpa Server oleh fitur kontrol kueri tingkat tinggi dari Antrian Kueri.

  • query_id_of_triggered_rerun: Bidang ini ada hanya ketika serverless_computing_source adalah query_queue_rerun. Bidang ini menunjukkan Query ID asli dari pernyataan SQL yang dijalankan ulang.

Buat antrian kueri dengan aturan pencocokan berbeda

  • Contoh 1: Buat antrian kueri dengan aturan pencocokan untuk tipe permintaan INSERT. Kode berikut memberikan contoh.

    Setelah antrian kueri dibuat, semua permintaan SQL tipe INSERT dicocokkan oleh pengklasifikasi classifier_1 dan dialokasikan ke antrian kueri insert_queue.

    -- Buat antrian kueri dengan konkurensi 10 dan ukuran antrian maksimum 20.
    CALL hg_create_query_queue ('insert_queue', 10, 20);
    
    -- Buat pengklasifikasi dan sambungkan 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');
  • Buat antrian kueri dengan aturan pencocokan untuk pengguna p4_123 dan p4_345. Kode berikut memberikan contoh.

    Setelah pembuatan, permintaan SQL yang dikirim oleh pengguna p4_123 dan p4_345 dicocokkan oleh classifier_2 dan dialokasikan ke antrian kueri user_queue.

    -- Buat antrian kueri dengan konkurensi 3 dan ukuran antrian maksimum tak terbatas.
    CALL hg_create_query_queue ('user_queue', 3);
    CALL hg_set_query_queue_property('user_queue','max_queue_size', -1);
    -- Buat pengklasifikasi 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, Anda harus menyertakan namanya dalam tanda kutip ganda (""). Sebagai contoh, CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', '"BASIC$xxx"');.

  • Buat antrian kueri dengan aturan pencocokan untuk database test dan postgres. Kode berikut memberikan contoh.

    Setelah antrian kueri dibuat, permintaan SQL terkait database test dan postgres dicocokkan oleh classifier_3 dan dialokasikan ke antrian kueri db_queue.

    -- Buat antrian kueri dengan konkurensi 5.
    CALL hg_create_query_queue ('db_queue', 5);
    
    -- Atur waktu antrian maksimum menjadi 600000 ms. Jika kueri menunggu lebih lama dari waktu ini, kesalahan dilaporkan.
    CALL hg_set_query_queue_property ('db_queue', 'queue_timeout_ms', '600000');
    
    -- Buat pengklasifikasi dan sambungkan 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');
  • Buat antrian kueri dengan aturan pencocokan untuk tipe mesin HQE. Kode berikut memberikan contoh.

    Setelah antrian kueri dibuat, permintaan SQL terkait mesin HQE dicocokkan oleh classifier_4 dan dialokasikan ke antrian kueri hqe_queue.

    -- Buat antrian kueri dengan konkurensi 10.
    CALL hg_create_query_queue ('hqe_queue', 10);
    
    -- Buat pengklasifikasi dan sambungkan 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 tugas (skenario ekstrem)

Atur konkurensi dan ukuran antrian antrian kueri insert_queue menjadi 0. Kode berikut memberikan contoh.

CALL hg_set_query_queue_property ('insert_queue', 'max_concurrency', '0');
CALL hg_set_query_queue_property ('insert_queue', 'max_queue_size', '0');