全部产品
Search
文档中心

Hologres:Jalankan tugas baca dan tulis dengan Komputasi Tanpa Server

更新时间:Feb 07, 2026

Hologres mendukung Serverless Computing mulai dari V2.1.17 dan versi selanjutnya. Topik ini menjelaskan cara menjalankan tugas menggunakan fitur Serverless Computing di Hologres.

Fitur yang didukung oleh Serverless Computing

Serverless Computing mendukung jenis tugas berikut:

  • Sejak Hologres V2.1.17, tugas DML utama didukung, seperti INSERT (tidak termasuk INSERT OVERWRITE), INSERT ON CONFLICT (UPSERT), DELETE, dan UPDATE.

  • Sejak Hologres V2.2.14, tugas Data Query Language (DQL) didukung.

  • Sejak Hologres V3.0.1, tugas COPY dalam DML didukung.

  • Sejak Hologres V3.0.9, tugas CREATE TABLE AS (CTAS) dalam DML didukung.

  • Sejak Hologres V2.2.42/V3.0.19, tugas RESHARDING didukung.

  • Sejak Hologres V3.0.26, tugas INSERT OVERWRITE dalam DML didukung menggunakan prosedur tersimpan hg_insert_overwrite. Pernyataan DML dan DQL dalam prosedur tersimpan juga didukung.

  • Sejak Hologres V3.1.0, sintaks native INSERT OVERWRITE dalam DML dan tugas REBUILD didukung.

  • Sejak Hologres V3.1.3, tabel terenkripsi didukung untuk operasi baca maupun tulis. Ini mencakup tabel terenkripsi internal Hologres dan tabel eksternal MaxCompute terenkripsi. Untuk membaca atau menulis ke tabel terenkripsi internal Hologres, Anda harus mengaktifkan parameter GUC hg_serverless_computing_enable_encrypted_table. Untuk informasi selengkapnya, lihat Enkripsi data.

  • Sejak Hologres V3.1.11, tugas compaction didukung. Untuk informasi selengkapnya, lihat Jalankan tugas compaction dengan Serverless Computing.

  • Sejak Hologres V4.0, tabel eksternal DLF didukung untuk operasi baca maupun tulis. Untuk format file yang didukung dan pertimbangan lainnya, lihat Percepat akses ke data lake OSS dengan DLF.

Serverless Computing mendukung ekstensi fungsi berikut:

  • ClickHouse

  • Flow Analysis

  • PostGIS

  • RoaringBitmap

  • BSI

  • Proxima

Serverless Computing tidak didukung dalam kasus berikut:

  • Kueri pada instans secondary read-only. Instans primer dan instans virtual warehouse berfungsi sebagaimana mestinya.

  • Kueri yang menggunakan transaksi DML multi-pernyataan, misalnya ketika set hg_experimental_enable_transaction = on diaktifkan.

  • Pernyataan SQL yang menggunakan Fixed Plans.

  • Kueri atau penulisan lintas database.

Jalankan tugas baca dan tulis dengan resource Serverless Computing

Hologres memungkinkan Anda menggunakan resource Serverless Computing secara fleksibel. Anda dapat mengarahkan pernyataan SQL individual ke resource Serverless atau menetapkan aturan untuk menjalankan kumpulan pernyataan SQL pada resource Serverless.

Hologres mendukung metode berikut untuk mengarahkan pernyataan SQL ke resource Serverless sebelum eksekusi, diurutkan berdasarkan prioritas menurun:

  1. Tingkat SQL (tingkat sesi): Tetapkan parameter hg_computing_resource ke 'serverless'. Semua permintaan baca dan tulis dalam koneksi saat ini kemudian dijalankan pada resource Serverless.

  2. Tingkat pengguna: Tetapkan parameter hg_computing_resource ke 'serverless' agar dieksekusi menggunakan resource Serverless.

  3. Tingkat antrian kueri: Konfigurasikan semua tugas dalam antrian kueri agar dijalankan pada resource Serverless.

  4. Serverless Computing Otomatis: Saat diaktifkan, sistem secara otomatis mengidentifikasi tugas besar dan menjalankannya pada resource Serverless.

  5. Jika tidak ada kondisi di atas yang berlaku, pernyataan SQL dijalankan pada resource instans saat ini.

Saat pernyataan SQL sedang berjalan, Anda juga dapat mengonfigurasi agar kueri besar secara otomatis dijalankan ulang pada resource Serverless. Hal ini mengurangi beban pada sistem produksi, menurunkan frekuensi error kehabisan memori (OOM), serta meningkatkan stabilitas sistem.

Catatan

Ketika pernyataan SQL dijalankan pada resource Serverless, resource tersebut dikhususkan untuk pernyataan SQL tersebut. Tidak ada pernyataan SQL lain yang dijalankan secara bersamaan.

Konfigurasi pada tingkat SQL

Metode ini umum digunakan dalam skenario berikut:

  • Tugas impor atau kueri satu kali, seperti penyegaran data historis atau pembangunan ulang skema atau properti tabel.

  • Tugas impor offline berkala, seperti impor dan ekspor data offline M+1, T+1, atau H+1. Tambahkan konfigurasi ini dalam tugas penjadwalan Anda.

  • Skema lain yang memerlukan penggunaan fleksibel resource Serverless.

Jalankan perintah berikut untuk menggunakan resource Serverless Computing pada pernyataan SQL. Kami menyarankan menyetel ini pada tingkat sesi.

-- Gunakan resource Serverless Computing untuk menjalankan SQL. Nilai default adalah 'local', yang berarti SQL dijalankan pada resource instans saat ini.
SET hg_computing_resource = 'serverless';

-- Setel ulang pengaturan setelah mengirimkan pernyataan DML untuk mencegah pernyataan SQL yang tidak perlu menggunakan resource Serverless.
RESET hg_computing_resource;
Penting
  • Kami tidak menyarankan mengubah pengaturan ini pada tingkat database.

  • Anda dapat menjalankan RESET hg_computing_resource untuk mengatur ulang parameter dan mencegah pernyataan SQL lain dalam sesi tersebut menggunakan resource Serverless secara tidak perlu.

Contoh:

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

-- Jalankan SQL dengan resource Serverless Computing --
    -- Aktifkan pengaturan pada tingkat sesi
SET hg_computing_resource = 'serverless';
    -- Jalankan pernyataan SQL
INSERT INTO sink_tbl SELECT * FROM source_tbl;
    -- Setel ulang pengaturan
RESET hg_computing_resource;

Konfigurasi pada tingkat pengguna

Metode ini umum digunakan dalam skenario berikut:

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

  • Dasbor data prioritas tinggi. Anda dapat mengonfigurasi akun yang terkait dengan sumber data dasbor tersebut.

Jalankan perintah berikut untuk mengonfigurasi semua pernyataan SQL yang dikeluarkan oleh pengguna atau role tertentu agar secara default dijalankan pada resource Serverless Computing.

Catatan

Konfigurasi ini memiliki prioritas lebih tinggi daripada pengaturan GUC tingkat database tetapi prioritas lebih rendah daripada pengaturan GUC tingkat sesi. Untuk informasi selengkapnya, lihat Parameter GUC.

-- Atur agar pengguna menggunakan resource Serverless Computing secara default untuk pernyataan SQL dalam database tertentu
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_computing_resource = 'serverless';

-- Hapus pengaturan
ALTER USER "<role_name>" IN DATABASE <db_name> RESET hg_computing_resource;

Konfigurasi pada tingkat antrian kueri

Hologres memungkinkan Anda mengonfigurasi antrian kueri sehingga semua pernyataan SQL-nya dijalankan pada resource Serverless Computing. Untuk informasi selengkapnya tentang konfigurasi antrian kueri, lihat Antrian kueri. Dengan fitur ini, Anda dapat menggunakan kemampuan klasifikasi antrian kueri untuk mengarahkan kategori tertentu pernyataan SQL ke resource Serverless. Contohnya meliputi:

  • Berdasarkan jenis kueri: INSERT, SELECT, UPDATE, atau DELETE.

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

  • Berdasarkan sidik jari SQL: Jika pola kueri mengonsumsi banyak resource atau menimbulkan risiko stabilitas, Anda dapat menetapkan semua sidik jari SQL yang cocok ke resource Serverless.

  • Berdasarkan mode penyimpanan: hot atau cold. Misalnya, Anda dapat menetapkan semua kueri penyimpanan cold ke resource Serverless.

Jalankan perintah berikut untuk mengonfigurasi fitur ini:

  • Instans tujuan umum

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

    -- Jalankan semua kueri dalam antrian target pada resource Serverless
    CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless');
    
    -- (Opsional) Tetapkan prioritas saat menggunakan resource Serverless untuk kueri dalam antrian target. Nilai valid: 1 hingga 5. Default: 3
    CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');

Komputasi tanpa server adaptif

Hologres secara otomatis mengidentifikasi tugas besar dalam sistem dan mengarahkannya ke resource Serverless. Untuk informasi selengkapnya, lihat Komputasi tanpa server otomatis.

Jalankan ulang otomatis pekerjaan besar

Jika pernyataan SQL sudah berjalan pada resource instans saat ini, Anda dapat lebih meningkatkan stabilitas sistem dengan mengklasifikasikan kueri yang melebihi waktu proses tertentu atau memicu error OOM sebagai kueri besar. Kueri tersebut kemudian secara otomatis dijalankan ulang pada resource Serverless. Untuk informasi selengkapnya, lihat Kontrol kueri besar.

Tetapkan prioritas untuk tugas Serverless Computing

Hologres memungkinkan Anda menetapkan prioritas untuk pernyataan SQL yang dijalankan pada resource Serverless Computing. Dengan membatasi penggunaan resource maksimum per pernyataan SQL dan menggunakan antrian berbasis prioritas, Hologres memastikan eksekusi pernyataan SQL yang stabil dan teratur pada resource Serverless Computing.

Contoh:

Instans Anda menggunakan 32 core, dan resource Serverless Computing maksimum yang tersedia adalah 96 core. SQL A sedang berjalan pada resource Serverless dan menggunakan 64 core. Dalam antrian tugas Serverless, SQL B memerlukan 48 core dan memiliki prioritas 5, sedangkan SQL C memerlukan 32 core dan memiliki prioritas 3. Dalam kasus ini, sistem menunggu SQL A selesai lalu mengalokasikan 48 core untuk menjalankan SQL B. Sistem tidak menggunakan sisa 32 core untuk menjalankan SQL C karena SQL B memiliki prioritas lebih tinggi.

  • Jalankan perintah berikut untuk menetapkan prioritas pernyataan SQL pada resource Serverless Computing.

    Prioritas berkisar antara 1 hingga 5. Nilai default adalah 3. Nilai yang lebih tinggi menunjukkan prioritas lebih tinggi dan alokasi resource lebih awal, terlepas dari jumlah resource yang diminta.

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

    -- Jalankan SQL dengan resource Serverless Computing
    SET hg_computing_resource = 'serverless';
    
    -- Tetapkan prioritas SQL ini ke 5
    SET hg_experimental_serverless_computing_query_priority to 5;
    
    -- Jalankan pernyataan SQL
    INSERT INTO sink_tbl SELECT * FROM source_tbl;
     
    -- Setel ulang pengaturan
    RESET hg_computing_resource;
    RESET hg_experimental_serverless_computing_query_priority;

Verifikasi Serverless Computing

Jalankan perintah berikut untuk melihat rencana eksekusi pernyataan SQL.

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

-- Jalankan pernyataan SQL
EXPLAIN INSERT INTO sink_tbl SELECT * FROM source_tbl;

-- Setel ulang pengaturan
RESET hg_computing_resource;

Hasilnya mirip dengan berikut. Jika hasil berisi Computing Resource: Serverless, artinya pernyataan SQL tersebut dijalankan pada resource Serverless Computing.

                                        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)

Anda juga dapat melihat tugas aktif dan historis pada resource Serverless. Untuk informasi selengkapnya, lihat Pemantauan dan O&M Serverless Computing.