All Products
Search
Document Center

Hologres:Jalankan tugas baca dan tulis dengan Serverless Computing

Last Updated:Apr 11, 2026

Hologres telah mendukung Serverless Computing sejak V2.1.17. Topik ini menjelaskan cara menggunakan fitur tersebut untuk menjalankan tugas.

Fitur yang didukung

Serverless Computing mendukung jenis tugas berikut:

  • V2.1.17+: Tugas Data Manipulation Language (DML) utama, termasuk INSERT (tidak termasuk INSERT OVERWRITE), INSERT ON CONFLICT (UPSERT), DELETE, dan UPDATE.

  • V2.2.14+: Tugas Data Query Language (DQL).

  • V3.0.1+: Tugas COPY dalam DML.

  • V3.0.9+: Tugas CREATE TABLE AS (CTAS) dalam DML.

  • V2.2.42/V3.0.19+: Tugas RESHARDING.

  • Versi Hologres V3.0.26 dan versi setelahnya mendukung tugas INSERT OVERWRITE dalam DML melalui prosedur tersimpan hg_insert_overwrite, serta DML dan DQL di dalam prosedur tersimpan.

  • V3.1.0+: Sintaks INSERT OVERWRITE native dalam DML, dan tugas REBUILD.

  • V3.1.3+: Baca dari dan tulis ke tabel terenkripsi, termasuk tabel internal Hologres terenkripsi dan tabel eksternal MaxCompute terenkripsi. Untuk membaca dari atau menulis ke tabel internal terenkripsi, Anda harus mengaktifkan parameter GUC hg_serverless_computing_enable_encrypted_table. Untuk informasi selengkapnya, lihat Enkripsi data.

  • V3.1.11+: Tugas Compaction. Untuk informasi selengkapnya, lihat Gunakan Serverless Computing untuk menjalankan tugas compaction.

  • V4.0+: Baca dari dan tulis ke tabel eksternal Data Lake Formation (DLF). Untuk informasi tentang format file dan pertimbangan lainnya, lihat Percepat akses ke data lake OSS berbasis DLF.

  • V4.1+: Penyembunyian data (Data masking). Untuk informasi selengkapnya, lihat Penyembunyian data.

Serverless Computing mendukung ekstensi fungsi berikut:

  • ClickHouse

  • Flow Analysis

  • PostGIS

  • RoaringBitmap

  • BSI

  • Proxima

Serverless Computing tidak didukung dalam skenario berikut:

  • Kueri pada instans secondary read-only. Serverless Computing berfungsi sebagaimana mestinya pada instans primary dan instans virtual warehouse.

  • Kueri dengan transaksi DML multi-baris yang diaktifkan, misalnya dengan menjalankan set hg_experimental_enable_transaction = on.

  • Pernyataan SQL yang menggunakan Fixed Plan.

  • Kueri dan penulisan lintas database.

Rutekan SQL ke resource serverless

Hologres memungkinkan Anda menggunakan resource serverless secara fleksibel. Anda dapat merutekan pernyataan SQL individual sesuai kebutuhan atau menyiapkan aturan untuk menjalankan batch SQL di atasnya.

Hologres mengevaluasi aturan routing dalam urutan prioritas berikut. Aturan pertama yang cocok akan diterapkan:

  1. Tingkat sesi: Atur parameter hg_computing_resource ke 'serverless'. Permintaan baca dan tulis dalam koneksi saat ini menggunakan resource serverless.

  2. Tingkat pengguna: Atur parameter hg_computing_resource ke 'serverless' untuk pengguna tertentu, sehingga tugas mereka dijalankan pada resource serverless.

  3. Tingkat Query Queue: Konfigurasikan semua tugas dalam Query Queue untuk dijalankan pada resource serverless.

  4. Komputasi serverless adaptif: Setelah Anda mengaktifkan fitur ini, sistem secara otomatis mengidentifikasi dan menjalankan tugas besar pada resource serverless.

  5. Jika tidak ada kondisi di atas yang terpenuhi, tugas dijalankan pada resource instans saat ini.

Anda juga dapat mengonfigurasi kueri besar agar secara otomatis dicoba ulang pada resource serverless. Hal ini membantu mengurangi beban pada layanan produksi Anda, meminimalkan frekuensi error kehabisan memori (OOM), dan meningkatkan stabilitas sistem.

Catatan

Saat pernyataan SQL dijalankan pada resource serverless, resource komputasi dialokasikan secara eksklusif untuk pernyataan tersebut dan tidak menjalankan pernyataan SQL lain secara bersamaan.

Penting

Penting:

  • Saat Anda menjalankan permintaan baca dan tulis menggunakan Serverless Computing, permintaan tersebut dirutekan dari resource komputasi instans Anda ke kolam resource serverless. Proses ini melibatkan penanganan metadata dan mengonsumsi sejumlah kecil resource komputasi instans Anda. Konsumsi ini biasanya dapat diabaikan, tetapi Anda harus menghindari mengirim QPS permintaan yang terlalu tinggi ke Serverless Computing.

  • Untuk instans tujuan umum, pemrosesan metadata ini mengonsumsi resource komputasi milik instans tersebut.

  • Untuk instans virtual warehouse, pemrosesan metadata ini mengonsumsi resource komputasi dari virtual warehouse leader, terlepas dari apakah Anda terhubung melalui virtual warehouse leader atau follower.

Konfigurasi tingkat sesi

Untuk menggunakan resource serverless dalam perintah SQL, jalankan pernyataan berikut. Kami merekomendasikan konfigurasi tingkat sesi.

Metode ini cocok untuk skenario berikut:

  • Tugas impor atau kueri satu kali, seperti menyegarkan data historis atau memodifikasi struktur atau properti tabel (REBUILD).

  • Tugas impor dan ekspor offline berkala, seperti operasi data offline M+1, T+1, atau H+1. Anda dapat menambahkan konfigurasi ini ke tugas terjadwal Anda.

  • Semua skenario lain yang memerlukan penggunaan fleksibel resource serverless.

-- Gunakan resource Serverless Computing untuk menjalankan SQL. Nilai default adalah local, yang berarti resource milik instans digunakan.
SET hg_computing_resource = 'serverless';

-- Setel ulang konfigurasi setelah mengirimkan pernyataan DML untuk memastikan pernyataan SQL berikutnya tidak menggunakan resource serverless.
RESET hg_computing_resource;
Penting
  • Kami tidak merekomendasikan memodifikasi parameter ini di tingkat database.

  • Anda dapat menjalankan RESET hg_computing_resource untuk mengatur ulang konfigurasi dan mencegah pernyataan SQL berikutnya menggunakan resource serverless.

Contoh:

-- Persiapkan data
    -- Buat tabel sumber
CREATE TABLE source_tbl ( id int );
    -- Buat tabel tujuan
CREATE TABLE sink_tbl ( id int );
    -- Tulis data sampel ke tabel sumber
INSERT INTO source_tbl
SELECT * FROM generate_series(1, 99999999);

-- Gunakan resource Serverless Computing untuk menjalankan pernyataan SQL
    -- Aktifkan fitur di tingkat sesi
SET hg_computing_resource = 'serverless';
    -- Jalankan pernyataan SQL
INSERT INTO sink_tbl SELECT * FROM source_tbl;
    -- Setel ulang konfigurasi
RESET hg_computing_resource;

Konfigurasi tingkat pengguna

Metode ini cocok untuk skenario berikut:

  • Penggunaan harian oleh pengguna dengan hak istimewa tinggi, seperti superuser.

  • Dasbor data prioritas tinggi. Anda dapat menerapkan konfigurasi ini ke akun yang digunakan sebagai sumber data untuk dasbor tersebut.

Agar semua pernyataan SQL dari USER atau ROLE tertentu dijalankan pada resource serverless secara default, gunakan pernyataan berikut.

Catatan

Metode konfigurasi ini memiliki prioritas lebih tinggi daripada parameter GUC yang diatur di tingkat database tetapi prioritas lebih rendah daripada yang diatur di tingkat sesi. Untuk informasi selengkapnya, lihat Parameter GUC.

-- Konfigurasikan pengguna agar menjalankan pernyataan SQL pada resource serverless secara default dalam database tertentu.
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_computing_resource = 'serverless';

-- Kembalikan konfigurasi.
ALTER USER "<role_name>" IN DATABASE <db_name> RESET hg_computing_resource;

Konfigurasi tingkat Query Queue

Hologres memungkinkan Anda mengonfigurasi Query Queue tertentu agar menjalankan semua pernyataan SQL-nya pada resource serverless. Hal ini memungkinkan Anda menggunakan klasifikasi Query Queue untuk merutekan kategori SQL tertentu ke resource serverless. Untuk informasi selengkapnya, lihat Query Queue. Contoh:

  • Berdasarkan jenis kueri: INSERT, SELECT, UPDATE, DELETE, dan lainnya.

  • Berdasarkan mesin kueri: HQE, PQE, SQE, HiveQE. Misalnya, Anda dapat merutekan semua kueri non-direct-read pada tabel eksternal MaxCompute (tugas SQE) ke resource serverless.

  • Berdasarkan sidik jari SQL: Jika pola kueri tertentu mengonsumsi resource signifikan dan menimbulkan risiko stabilitas, Anda dapat mengonfigurasi sidik jari SQL-nya agar selalu menggunakan resource serverless.

  • Berdasarkan mode penyimpanan: hot atau cold. Misalnya, Anda dapat merutekan semua kueri pada penyimpanan dingin ke resource serverless.

Anda dapat menjalankan pernyataan berikut untuk mengonfigurasi fitur ini:

  • Instans tujuan umum

    -- Konfigurasikan semua kueri dalam antrian target agar dijalankan pada resource serverless.
    CALL hg_set_query_queue_property('<query_queue_name>', 'computing_resource', 'serverless');
    
    -- (Opsional) Tetapkan prioritas untuk kueri dalam antrian target saat dijalankan pada resource serverless. Nilai valid: 1-5. Nilai default: 3.
    CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');
  • Instans virtual warehouse

    -- Konfigurasikan semua kueri dalam antrian target agar dijalankan pada resource serverless.
    CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless');
    
    -- (Opsional) Tetapkan prioritas untuk kueri dalam antrian target saat dijalankan pada resource serverless. Nilai valid: 1-5. Nilai default: 3.
    CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');

Komputasi serverless adaptif

Hologres dapat secara otomatis mengidentifikasi tugas besar dalam sistem dan merutekannya ke resource serverless. Untuk informasi selengkapnya, lihat Komputasi serverless adaptif.

Percobaan ulang otomatis untuk tugas besar

Jika pernyataan SQL sudah berjalan pada resource instans Anda, Anda dapat menentukan ambang batas untuk kueri besar, seperti kueri yang berjalan melebihi durasi tertentu atau menyebabkan error OOM. Hologres secara otomatis mencoba ulang kueri tersebut pada resource serverless untuk meningkatkan stabilitas sistem dan mencegah pernyataan SQL mengonsumsi resource secara berlebihan. Untuk informasi selengkapnya, lihat Kontrol kueri besar.

Tentukan prioritas tugas Serverless Computing

Hologres memungkinkan Anda menetapkan prioritas untuk pernyataan SQL yang dirutekan ke Serverless Computing. Dengan menetapkan batas resource untuk setiap pernyataan SQL dan menggunakan mekanisme antrian berbasis prioritas, hal ini memastikan bahwa tugas yang masuk ke Serverless Computing dieksekusi secara stabil dan teratur.

Contoh:

Instans Anda memiliki 32 core, dan resource serverless maksimum yang tersedia baginya adalah 96 core. SQL A sedang berjalan dan menggunakan 64 core resource serverless. Pada saat yang sama, antrian tugas serverless berisi SQL B (meminta 48 core, prioritas 5) dan SQL C (meminta 32 core, prioritas 3). Dalam kasus ini, sistem menunggu SQL A selesai lalu secara preferensial mengalokasikan 48 core untuk menjalankan SQL B, bukan terlebih dahulu menggunakan 32 core yang tersisa untuk menjalankan SQL C.

  • Anda dapat menjalankan pernyataan berikut untuk menetapkan prioritas eksekusi pernyataan SQL pada resource serverless.

    Prioritas berkisar dari 1 hingga 5, dengan nilai default 3. Nilai yang lebih tinggi menunjukkan prioritas lebih tinggi, dan resource dialokasikan secara preferensial berdasarkan prioritas, terlepas dari jumlah resource yang diminta.

    -- Konfigurasi tingkat sesi
    SET hg_experimental_serverless_computing_query_priority = 5;
    -- Setel ulang konfigurasi
    RESET hg_experimental_serverless_computing_query_priority;
    
    -- Konfigurasi tingkat pengguna
    ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_experimental_serverless_computing_query_priority = 5;
    -- Setel ulang konfigurasi
    ALTER USER "<role_name>" IN DATABASE <db_name> RESET hg_experimental_serverless_computing_query_priority;
  • Contoh

    -- Gunakan resource Serverless Computing untuk menjalankan pernyataan SQL.
    SET hg_computing_resource = 'serverless';
    
    -- Tetapkan prioritas pernyataan SQL ke 5.
    SET hg_experimental_serverless_computing_query_priority to 5;
    
    -- Jalankan pernyataan SQL.
    INSERT INTO sink_tbl SELECT * FROM source_tbl;
     
    -- Setel ulang konfigurasi.
    RESET hg_computing_resource;
    RESET hg_experimental_serverless_computing_query_priority;

Verifikasi Serverless Computing

Untuk melihat rencana kueri, jalankan pernyataan berikut.

-- Gunakan resource Serverless Computing untuk menjalankan pernyataan SQL.
SET hg_computing_resource = 'serverless';

-- Lihat rencana kueri.
EXPLAIN INSERT INTO sink_tbl SELECT * FROM source_tbl;

-- Setel ulang konfigurasi.
RESET hg_computing_resource;

Perintah tersebut mengembalikan hasil berikut. Jika output berisi Computing Resource: Serverless, pernyataan tersebut dieksekusi menggunakan resource serverless.

                                        QUERY PLAN                                        
------------------------------------------------------------------------------------------
 Gather  (cost=0.00..5.18 rows=100 width=4)
   ->  Insert  (cost=0.00..5.18 rows=100 width=4)
         ->  Redistribution  (cost=0.00..5.10 rows=100 width=4)
               ->  Local Gather  (cost=0.00..5.10 rows=100 width=4)
                     ->  Decode  (cost=0.00..5.10 rows=100 width=4)
                           ->  Seq Scan on source_tbl  (cost=0.00..5.00 rows=100 width=4)
 Computing Resource: Serverless
 Optimizer: HQO version 2.1.0
(8 rows)

Untuk melihat tugas yang sedang berjalan dan tugas historis pada resource serverless, lihat Pantau dan kelola Serverless Computing.