全部产品
Search
文档中心

Hologres:Pembatasan Otomatis (Beta)

更新时间:Nov 06, 2025

Mulai dari V3.1, Hologres mendukung konfigurasi pembatasan otomatis untuk antrian kueri. Berdasarkan beban gudang virtual, fitur ini secara otomatis menyesuaikan batas konkurensi maksimum antrian kueri guna mencapai pembatasan otomatis.

Skenario

Prinsip pembatasan otomatis adalah menyesuaikan secara dinamis batas konkurensi maksimum antrian kueri berdasarkan kondisi beban. Dengan mengontrol jumlah kueri yang dieksekusi secara bersamaan di gudang virtual, fitur ini mencegah sumber daya komputasi menjadi kelebihan beban. Fitur ini cocok untuk skenario berikut:

  • Skenario konkurensi tinggi: Jika terjadi konkurensi tinggi dengan overhead setiap permintaan yang relatif seragam, fitur pembatasan otomatis akan menyesuaikan batas konkurensi secara dinamis. Kurva CPU pada akhirnya akan stabil pada level tinggi tanpa mencapai 100% pemanfaatan.

    Catatan
    • Jika konkurensi terlalu rendah, ketika fitur pembatasan otomatis menyesuaikan batas konkurensi secara dinamis, kurva CPU dapat dengan mudah berfluktuasi naik turun, menciptakan pola "gerigi" dan mengakibatkan pemanfaatan CPU yang rendah.

    • Dalam kasus ekstrem, jika hanya ada satu permintaan kueri besar, fitur pembatasan otomatis tidak akan berpengaruh.

  • Skenario di mana penundaan permintaan dapat ditoleransi: Karena fitur ini membatasi lalu lintas, kueri yang melebihi batas akan mengantri di antrian kueri, sehingga meningkatkan latensi permintaan tersebut.

  • Periode konkurensi tinggi yang tidak dapat diprediksi: Ketika sulit untuk memprediksi kapan lonjakan permintaan lalu lintas akan terjadi, sehingga sulit untuk memesan sumber daya komputasi sebelumnya, Anda dapat menggunakan fitur pembatasan otomatis untuk mengurangi risiko stabilitas sistem.

Untuk skenario berikut, solusi lain direkomendasikan:

  • Pola waktu periodik yang jelas: Jika periode puncak lalu lintas harian relatif tetap, disarankan untuk menggunakan fitur penskalaan berbasis waktu gudang virtual untuk penjadwalan penskalaan.

  • Kueri besar dengan konkurensi rendah: Fitur pembatasan otomatis memiliki efek terbatas pada kueri besar dengan konkurensi rendah. Disarankan untuk menggunakan sumber daya komputasi serverless untuk mengeksekusi permintaan ini. Untuk informasi lebih lanjut, lihat Panduan Pengguna Komputasi Serverless.

  • Toleransi nol untuk penundaan permintaan: Anda perlu meningkatkan sumber daya komputasi untuk mengakomodasi kebutuhan konkurensi tinggi dan latensi rendah. Anda dapat menambah sumber daya komputasi atau menggunakan fitur kontrol kueri besar antrian kueri untuk meneruskan permintaan lambat ke sumber daya serverless untuk dieksekusi. Untuk informasi lebih lanjut, lihat Kontrol Kueri Besar.

Prasyarat

Anda telah membuat antrian kueri.

Catatan penggunaan

  • Hanya instance gudang virtual Hologres versi 3.1 atau lebih baru yang mendukung pembatasan otomatis. Instance tujuan umum tidak mendukung fitur ini.

    Catatan

    Anda dapat terlebih dahulu mengonversi instance tujuan umum menjadi instance gudang virtual dan kemudian menggunakan fitur ini. Untuk informasi lebih lanjut, lihat Ubah Tipe Instance dari Tujuan Umum ke Gudang Virtual untuk Sebuah Instance.

  • Pembatasan otomatis hanya berlaku untuk permintaan dalam antrian kueri. Ini mencakup kueri dengan engine_type seperti HQE, PQE, SQE, dan HiveQE, serta jenis kueri seperti SELECT, INSERT, UPDATE, DELETE, dan INSERT dengan COPY dan CREATE TABLE AS (CTAS).

  • Karena kueri berdasarkan rencana tetap tidak masuk ke antrian kueri, mereka tidak tunduk pada batasan konkurensi fitur pembatasan otomatis. Untuk informasi lebih lanjut, lihat Percepat Eksekusi Pernyataan SQL dengan Menggunakan Rencana Tetap. Disarankan untuk menggunakan gudang virtual yang berbeda untuk mengisolasi permintaan rencana tetap dari permintaan lainnya guna manajemen sumber daya dan permintaan yang lebih baik. Untuk informasi lebih lanjut, lihat Memulai dengan Gudang Virtual.

Gunakan pembatasan otomatis

Berikut ini menjelaskan cara mengonfigurasi pembatasan otomatis untuk gudang virtual dan antrian kueri.

Sintaksis

  • Konfigurasikan pembatasan otomatis untuk gudang virtual.

    Penting
    • Setelah fitur ini diaktifkan untuk gudang virtual, pembatasan otomatis diaktifkan secara default untuk semua antrian kueri di bawah gudang virtual. Anda dapat menonaktifkan pembatasan otomatis untuk antrian kueri tertentu sesuai kebutuhan dengan mengikuti operasi di bawah ini.

    • Ketika fitur ini dinonaktifkan untuk gudang virtual (dinonaktifkan secara default), sistem mengabaikan konfigurasi pembatasan otomatis pada tingkat antrian kueri.

    -- Aktifkan pembatasan otomatis untuk gudang virtual.
    CALL hg_set_warehouse_adaptive_concurrency_limiting ('<warehouse_name>', true);
    
    -- Nonaktifkan pembatasan otomatis untuk gudang virtual.
    CALL hg_set_warehouse_adaptive_concurrency_limiting ('<warehouse_name>', false);
  • Konfigurasikan pembatasan otomatis untuk antrian kueri.

    -- Aktifkan pembatasan otomatis untuk antrian kueri. (Diaktifkan secara default)
    CALL hg_set_query_queue_property ('<warehouse_name>', '<query_queue_name>', 'enable_adaptive_concurrency_limiting', 'true');
    
    -- Nonaktifkan pembatasan otomatis untuk antrian kueri, setara dengan menambahkan antrian ke daftar putih, mengecualikannya dari pembatasan.
    CALL hg_set_query_queue_property ('<warehouse_name>', '<query_queue_name>', 'enable_adaptive_concurrency_limiting', 'false');
  • Konfigurasikan konkurensi minimum untuk fitur pembatasan otomatis antrian kueri.

    Catatan

    Setelah mengonfigurasi konkurensi minimum, bahkan jika sistem mencapai batas konkurensi ini dan beban tetap tinggi, sistem tidak akan secara otomatis lebih lanjut mengurangi batas konkurensi.

    -- Konfigurasikan konkurensi minimum untuk fitur pembatasan otomatis antrian kueri. Nilai default adalah 1, dan nilai minimum adalah 1.
    CALL hg_set_query_queue_property ('<warehouse_name>', '<query_queue_name>', 'adaptive_concurrency_limiting_min_concurrency', '<min_concurrency>');

Parameter

Parameter

Deskripsi

warehouse_name

Nama gudang virtual. Untuk informasi lebih lanjut, lihat Memulai dengan gudang virtual.

query_queue_name

Nama antrian kueri. Untuk informasi lebih lanjut, lihat Kontrol kueri besar.

min_concurrency

Konkurensi minimum untuk fitur pembatasan otomatis antrian kueri. Nilai default adalah 1. Rentang nilainya adalah [1, konkurensi maksimum yang ditetapkan saat membuat antrian kueri].

Pemantauan dan Operasi & Pemeliharaan

Anda dapat mengklik ID instance target di konsol Hologres dan melihat metrik Penggunaan CPU Instance(%) pada halaman Monitoring Information untuk memantau penggunaan fitur pembatasan otomatis.

Contoh

Berikut ini menggunakan alat pengujian kinerja asli PostgreSQL, pgbench, untuk mendemonstrasikan contoh dan efek pembatasan otomatis.

  1. Buat tabel uji di Hologres dan sisipkan data.

    CREATE TABLE tbl_1 (col1 INT, col2 INT, col3 TEXT);
    CREATE TABLE tbl_2 (col1 INT, col2 INT, col3 TEXT);
    INSERT INTO tbl_1 SELECT i, i+1, md5(RANDOM()::TEXT) FROM GENERATE_SERIES (0, 500000) AS i;
    INSERT INTO tbl_2 SELECT i, i+1, md5(RANDOM()::TEXT) FROM GENERATE_SERIES (0, 500000) AS i;
  2. Atur konkurensi maksimum antrian kueri menjadi 100 di Hologres, menggunakan gudang virtual init_warehouse dan antrian kueri default_queue sebagai contoh.

    CALL hg_set_query_queue_property ('init_warehouse', 'default_queue', 'max_concurrency', '100');
  3. Buat file SQL pengujian kinerja select.sql di direktori bin tempat pgbench berada di klien, dan tulis pernyataan SQL berikut:

    EXPLAIN ANALYZE SELECT * FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.col3 = tbl_2.col3 ORDER BY 1;
  4. Tambahkan perintah berikut ke file konfigurasi server dan simpan. Atur kata sandi sebagai variabel lingkungan.

    export PGPASSWORD='<AccessKey_Secret>'
  5. Pergi ke direktori bin tempat pgbench berada di klien dan jalankan perintah pengujian kinerja berikut:

    ./pgbench
    -c 30 \
    -j 30 \
    -f select.sql \
    -d <Database> \
    -U <AccessKey_ID> \
    -h <Endpoint> \
    -p <Port> \
    -T 1800

    Untuk detail konfigurasi parameter, lihat Hubungkan ke Instance Hologres untuk Pengembangan Data.

  6. Selama pengujian kinerja, aktifkan dan nonaktifkan fitur pembatasan otomatis di Hologres secara berurutan, dan amati metrik pemanfaatan CPU gudang virtual hingga pengujian selesai.

    -- Aktifkan pembatasan otomatis.
    CALL hg_set_warehouse_adaptive_concurrency_limiting ('init_warehouse', true);
    
    -- Nonaktifkan pembatasan otomatis.
    CALL hg_set_warehouse_adaptive_concurrency_limiting ('init_warehouse', false);

Analisis Hasil:

Setelah pengujian kinerja selesai, metrik pemanfaatan CPU gudang virtual menunjukkan perilaku berikut:

  • Tahap awal pengujian: Pembatasan otomatis tidak diaktifkan, jumlah kueri yang mengantri di antrian kueri adalah 0, dan pemanfaatan CPU gudang virtual tetap pada 100% untuk waktu yang lama, menimbulkan risiko stabilitas sistem.

  • Tahap tengah pengujian: Pembatasan otomatis diaktifkan, jumlah kueri yang mengantri di antrian kueri dan pemanfaatan CPU gudang virtual sedikit berfluktuasi. Kemudian, jumlah kueri yang mengantri stabil di sekitar 17, dan pemanfaatan CPU stabil di sekitar 80%, secara signifikan mengurangi risiko stabilitas sistem.

  • Tahap akhir pengujian: Pembatasan otomatis dinonaktifkan, dan perilakunya konsisten dengan tahap awal pengujian.