Hologres mendukung Komputasi Tanpa Server mulai dari versi V2.1.17 ke atas. Topik ini menjelaskan cara mengeksekusi tugas menggunakan fitur Komputasi Tanpa Server di Hologres.
Fitur yang didukung
Komputasi Tanpa Server mendukung jenis tugas berikut:
Sejak V2.1.17: Tugas Data Manipulation Language (DML), termasuk
INSERT(tidak termasukINSERT OVERWRITE),INSERT ON CONFLICT(UPSERT),DELETE, danUPDATE.Sejak V2.2.14: Tugas Data Query Language (DQL).
Sejak V3.0.1: Tugas
COPYdalam DML.Sejak V3.0.9: Tugas
CREATE TABLE AS(CTAS).Sejak V2.2.42/V3.0.19: Tugas
RESHARDING.Sejak V3.0.26: Tugas
INSERT OVERWRITE(melalui prosedur tersimpanhg_insert_overwrite), serta DML dan DQL dalam prosedur tersimpan.Sejak V3.1.0: Sintaks asli
INSERT OVERWRITEdalam DML, dan tugasREBUILD.Sejak V3.1.3: Operasi baca dan tulis pada tabel terenkripsi, termasuk tabel internal terenkripsi dan tabel eksternal/asing MaxCompute terenkripsi. Untuk menggunakan fitur ini, aktifkan parameter GUC
hg_serverless_computing_enable_encrypted_table. Untuk informasi lebih lanjut, lihat Enkripsi Data.Sejak V3.1.11: Tugas Compaction. Untuk informasi lebih lanjut, lihat Gunakan Komputasi Tanpa Server untuk Mengeksekusi Tugas Compaction.
Sejak 4.0: Operasi baca dan tulis pada tabel eksternal Data Lake Formation (DLF). Lihat Gunakan DLF untuk Membaca Data dari dan Menulis Data ke OSS.
Komputasi Tanpa Server juga mendukung ekstensi fungsi berikut:
ClickHouse
Analisis Aliran
PostGIS
RoaringBitmap
BSI
Proxima
Komputasi Tanpa Server tidak didukung dalam skenario berikut:
Kueri pada instans sekunder read-only. Instans utama dan instans gudang virtual tidak terpengaruh.
Kueri dengan transaksi DML multi-baris diaktifkan, seperti
set hg_experimental_enable_transaction = on.Pernyataan SQL yang menggunakan Fixed Plan.
Kueri atau penulisan lintas database.
Gunakan sumber daya Komputasi Tanpa Server untuk mengeksekusi tugas baca dan tulis
Hologres memungkinkan Anda menggunakan sumber daya Komputasi Tanpa Server secara fleksibel. Anda dapat menjalankan pernyataan SQL individual pada sumber daya tanpa server sesuai permintaan, atau mengatur aturan untuk mengeksekusi pernyataan SQL dalam batch pada sumber daya tersebut.
Untuk mengirimkan pernyataan SQL ke sumber daya tanpa server sebelum eksekusi, gunakan metode berikut, dalam urutan prioritas menurun:
Tingkat SQL (tingkat sesi): Atur parameter
hg_computing_resourcemenjadi'serverless'. Permintaan baca dan tulis dalam koneksi saat ini akan menggunakan sumber daya tanpa server.Tingkat pengguna: Atur parameter
hg_computing_resourcemenjadi'serverless'untuk pengguna tertentu. Semua kueri dari pengguna ini akan menggunakan sumber daya tanpa server.Tingkat Antrian Kueri: Konfigurasikan semua tugas dalam antrian kueri untuk menggunakan sumber daya tanpa server.
Komputasi Tanpa Server Adaptif: Saat diaktifkan, sistem secara otomatis mengidentifikasi tugas besar dan mengeksekusinya menggunakan sumber daya tanpa server.
Jika tidak ada kondisi ini yang terpenuhi, kueri akan menggunakan sumber daya khusus dari instans saat ini.
Anda juga dapat mengonfigurasi kueri besar yang sedang berlangsung untuk secara otomatis dijalankan ulang pada sumber daya tanpa server. Ini membantu mengurangi beban pada layanan produksi Anda, menurunkan frekuensi kesalahan Out-of-Memory (OOM), dan meningkatkan stabilitas sistem.
Pernyataan SQL yang berjalan pada sumber daya tanpa server memiliki akses eksklusif ke sumber daya tersebut.
Konfigurasikan pada tingkat SQL
Metode ini sering digunakan dalam skenario berikut:
Tugas impor atau kueri satu kali, seperti menyegarkan data historis atau memodifikasi skema tabel dan atribut (
REBUILD).Tugas impor batch berkala, seperti impor dan ekspor data bulanan, harian, atau per jam. Anda dapat menambahkan konfigurasi ini ke tugas terjadwal Anda.
Semua skenario lain yang memerlukan penggunaan fleksibel sumber daya tanpa server.
Gunakan kode berikut untuk menjalankan perintah SQL pada sumber daya Komputasi Tanpa Server. Kami merekomendasikan untuk mengatur parameter ini pada tingkat sesi.
-- Gunakan sumber daya Komputasi Tanpa Server untuk mengeksekusi pernyataan SQL. Nilai default parameter adalah local, yang menunjukkan bahwa sumber daya khusus dari instans saat ini digunakan untuk mengeksekusi pernyataan SQL.
SET hg_computing_resource = 'serverless';
-- Setelah Anda mengirimkan pernyataan DML, reset konfigurasi untuk memastikan pernyataan SQL yang tidak perlu tidak menggunakan sumber daya tanpa server.
RESET hg_computing_resource;Jangan ubah parameter ini pada tingkat database.
Jalankan
RESET hg_computing_resourceuntuk mereset konfigurasi dan mencegah penggunaan sumber daya tanpa server yang tidak perlu.
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 sumber daya tanpa server untuk mengeksekusi pernyataan SQL --
-- Aktifkan komputasi tanpa server pada tingkat sesi.
SET hg_computing_resource = 'serverless';
-- Eksekusi pernyataan SQL.
INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- Reset konfigurasi.
RESET hg_computing_resource;Konfigurasikan pada tingkat pengguna
Metode ini sering digunakan dalam skenario berikut:
Operasi harian untuk pengguna dengan hak istimewa tinggi, seperti superuser.
Dashbor data prioritas tinggi. Anda dapat mengonfigurasi akun pengguna yang terkait dengan sumber data dashbor.
Gunakan kode berikut untuk mengonfigurasi semua pernyataan SQL dari USER atau ROLE tertentu untuk menggunakan sumber daya Komputasi Tanpa Server secara default.
Konfigurasi ini memiliki prioritas lebih tinggi daripada pengaturan tingkat database tetapi ditimpa oleh pengaturan tingkat sesi. Untuk informasi lebih lanjut, lihat Parameter GUC.
-- Konfigurasikan pengguna untuk menggunakan sumber daya Komputasi Tanpa Server secara default untuk database tertentu
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_computing_resource = 'serverless';
-- Reset konfigurasi
ALTER USER "<role_name>" IN DATABASE <db_name> RESET hg_computing_resource;Konfigurasikan pada tingkat antrian kueri
Hologres memungkinkan Anda mengonfigurasi semua pernyataan SQL dalam antrian kueri tertentu untuk menggunakan sumber daya Komputasi Tanpa Server. Untuk informasi lebih lanjut tentang cara mengonfigurasi antrian kueri, lihat Antrian Kueri. Konfigurasi ini menggunakan kemampuan klasifikasi antrian kueri untuk memastikan bahwa jenis pernyataan SQL tertentu selalu menggunakan sumber daya tanpa server. Contohnya meliputi:
Berdasarkan jenis kueri:
INSERT,SELECT,UPDATE, danDELETE.Berdasarkan mesin kueri: HQE, PQE, SQE, HiveQE. Misalnya, semua kueri pushdown untuk tabel asing/eksternal MaxCompute (tugas SQE) dapat dikonfigurasi untuk menggunakan sumber daya tanpa server.
Berdasarkan sidik jari SQL: Jika pola kueri tertentu mengonsumsi sumber daya signifikan dan dapat memengaruhi stabilitas, konfigurasikan sidik jarinya agar selalu menggunakan sumber daya tanpa server.
Berdasarkan mode penyimpanan:
hotdancold. Misalnya, semua kueri pada penyimpanan dingin dapat dikonfigurasi untuk menggunakan sumber daya tanpa server.
Gunakan kode berikut untuk menerapkan konfigurasi:
Untuk instans serbaguna
-- Atur semua kueri dalam antrian target untuk berjalan 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 ketika mereka menggunakan sumber daya tanpa server. Nilainya bisa 1-5, dan defaultnya adalah 3. CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');Untuk instans gudang virtual
-- Atur semua kueri dalam antrian target untuk berjalan 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 ketika mereka menggunakan sumber daya tanpa server. Nilainya bisa 1-5, dan defaultnya adalah 3. CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');
Komputasi Tanpa Server Adaptif
Hologres dapat secara otomatis mengidentifikasi tugas intensif sumber daya dan mengeksekusinya pada sumber daya tanpa server. Untuk informasi lebih lanjut, lihat Komputasi Tanpa Server Adaptif.
Otomatis jalankan ulang tugas besar
Untuk meningkatkan stabilitas sistem dan mencegah pernyataan SQL mengonsumsi sumber daya instans yang berlebihan, konfigurasikan kueri besar untuk secara otomatis dijalankan ulang pada sumber daya tanpa server. Anda dapat mendefinisikan kueri besar berdasarkan kondisi seperti melebihi waktu eksekusi tertentu atau menyebabkan kesalahan OOM. Untuk informasi lebih lanjut, lihat Kontrol Kueri Besar.
Atur prioritas untuk tugas komputasi tanpa server
Hologres memungkinkan Anda mengatur prioritas untuk pernyataan SQL yang masuk ke antrian Komputasi Tanpa Server. Dengan mendefinisikan jumlah maksimum sumber daya tanpa server yang dapat digunakan oleh satu pernyataan SQL dan menerapkan mekanisme antrian berbasis prioritas, Anda dapat memastikan bahwa pernyataan SQL dalam antrian Komputasi Tanpa Server dieksekusi secara stabil dan teratur.
Pertimbangkan contoh berikut:
Instans Anda memiliki sumber daya khusus sebesar 32 vCPU, dan sumber daya Komputasi Tanpa Server maksimum yang tersedia adalah 96 vCPU. SQL A saat ini sedang berjalan dan menggunakan 64 vCPU sumber daya tanpa server. Sementara itu, dua pernyataan lainnya berada dalam antrian Komputasi Tanpa Server: SQL B (membutuhkan 48 vCPU, prioritas 5) dan SQL C (membutuhkan 32 vCPU, prioritas 3). Dalam kasus ini, Hologres menunggu SQL A selesai dan kemudian mengalokasikan 48 vCPU untuk mengeksekusi SQL B, bukan pertama-tama menggunakan 32 vCPU yang tersisa untuk mengeksekusi SQL C.
Gunakan kode berikut untuk mengatur prioritas eksekusi untuk pernyataan SQL yang antri untuk sumber daya tanpa server.
Prioritas berkisar dari 1 hingga 5, dengan nilai default 3. Nilai yang lebih tinggi menunjukkan prioritas yang lebih tinggi, artinya tugas menerima sumber daya terlebih dahulu, terlepas dari jumlah yang diminta.
-- Konfigurasikan pada tingkat sesi SET hg_experimental_serverless_computing_query_priority = 5; -- Reset konfigurasi. RESET hg_experimental_serverless_computing_query_priority; -- Konfigurasikan pada tingkat pengguna ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_experimental_serverless_computing_query_priority = 5; -- Reset konfigurasi. ALTER USER "<role_name>" IN DATABASE <db_name> RESET hg_experimental_serverless_computing_query_priority;Contoh
-- Gunakan sumber daya tanpa server untuk mengeksekusi pernyataan SQL. SET hg_computing_resource = 'serverless'; -- Atur prioritas pernyataan SQL ini menjadi 5. SET hg_experimental_serverless_computing_query_priority to 5; -- Eksekusi pernyataan SQL INSERT INTO sink_tbl SELECT * FROM source_tbl; -- Reset konfigurasi RESET hg_computing_resource; RESET hg_experimental_serverless_computing_query_priority;
Verifikasi konfigurasi komputasi tanpa server
Gunakan kode berikut untuk melihat rencana eksekusi untuk pernyataan SQL sebelumnya.
-- Gunakan sumber daya tanpa server untuk mengeksekusi pernyataan SQL.
SET hg_computing_resource = 'serverless';
-- Jelaskan pernyataan eksekusi.
EXPLAIN INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- Reset konfigurasi.
RESET hg_computing_resource;Kode tersebut mengembalikan hasil berikut. Jika output berisi Computing Resource: Serverless, itu menunjukkan bahwa pernyataan SQL menggunakan sumber daya Komputasi Tanpa Server.
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 yang sedang berjalan dan historis pada sumber daya tanpa server. Untuk informasi lebih lanjut, lihat Pemantauan dan O&M Komputasi Tanpa Server.