Hologres memungkinkan Anda menjalankan tugas menggunakan resource komputasi tanpa server. Resource ini dibatasi baik di tingkat instans maupun SQL. Topik ini menjelaskan batas resource untuk komputasi tanpa server dan cara mengelola resource tanpa server untuk kueri SQL Anda.
Kuota resource tanpa server
Kuota resource tanpa server adalah jumlah maksimum resource komputasi tanpa server yang dapat diminta oleh sebuah instans Hologres. Kuota ini ditentukan oleh resource komputasi dedicated dari instans tersebut. Tabel berikut menjelaskan hubungan tersebut.
Instance Compute Unit (CU) | Kuota resource tanpa server |
Resource komputasi instans < 32 | Komputasi Tanpa Server tidak didukung. |
Nilai resource komputasi instans harus lebih besar dari atau sama dengan 32 dan kurang dari 688. |
|
Resource komputasi instans >= 688 | Kuota dibatasi hingga 2048 CU. Batas ini dinaikkan menjadi 4096 CU mulai v3.1.9. |
Kuota resource tanpa server adalah jumlah maksimum resource tanpa server yang dapat digunakan secara bersamaan oleh semua kueri SQL aktif (dalam status EXECUTE) pada suatu instans.
Kolam sumber daya tanpa server di setiap zona digunakan bersama oleh semua instans dalam zona tersebut.
Komputasi tanpa server merupakan resource komputasi pay-as-you-go, dan alokasi sumber daya tidak dijamin. Jika kuota instans terlampaui atau kolam sumber daya tanpa server di zona penuh, kueri SQL yang dikirimkan akan masuk antrian (status QUEUE) menunggu ketersediaan resource.
Atur resource tanpa server untuk kueri SQL
Jumlah resource yang dialokasikan untuk suatu kueri SQL adalah nilai minimum dari tiga faktor yang dijelaskan dalam tabel berikut. Resource diminta dalam kelipatan 15 CU.
Parameter atau batas | Deskripsi |
Quota | Resource komputasi tanpa server maksimum yang dapat digunakan oleh instans Hologres. |
hg_experimental_serverless_computing_max_cores (Max Cores) | Batas atas resource komputasi tanpa server yang dapat dialokasikan untuk satu kueri SQL. Anda dapat mengubah parameter ini.
|
hg_experimental_serverless_computing_required_cores (Required Cores) | Jumlah resource komputasi tanpa server yang diperkirakan sistem dibutuhkan oleh suatu kueri SQL. Nilai default adalah 0, yang mengaktifkan estimasi otomatis. Jika Anda menentukan nilai bukan nol, sistem akan menggunakan nilai yang lebih besar antara nilai yang Anda tentukan atau 50% dari estimasinya sendiri. |
Atur Max Cores
Anda dapat menjalankan pernyataan berikut untuk mengatur batas atas resource tanpa server untuk satu kueri SQL.
Untuk memastikan ketersediaan resource yang cukup bagi eksekusi SQL, hindari mengubah parameter ini. Jika Anda harus mengubahnya, lakukan pengujian menyeluruh terlebih dahulu.
-- Atur CU maksimum yang dialokasikan untuk satu task komputasi tanpa server. Default: 512.
SET hg_experimental_serverless_computing_max_cores = 512;
-- Reset konfigurasi.
reset hg_experimental_serverless_computing_max_cores;Contoh:
-- Gunakan resource komputasi tanpa server untuk menjalankan kueri SQL.
SET hg_computing_resource = 'serverless';
-- Atur CU maksimum untuk satu kueri SQL menjadi 32.
SET hg_experimental_serverless_computing_max_cores = 32;
-- Jalankan kueri SQL.
INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- Reset konfigurasi.
reset hg_computing_resource;
reset hg_experimental_serverless_computing_max_cores;Atur Required Cores
Secara default, sistem secara otomatis memperkirakan resource yang dibutuhkan untuk suatu kueri berdasarkan kompleksitasnya. Estimasi otomatis ini memberikan keseimbangan antara pemanfaatan resource dan waktu eksekusi kueri.
Untuk meningkatkan performa kueri dengan mengalokasikan lebih banyak resource komputasi tanpa server, Anda dapat menjalankan pernyataan berikut untuk menentukan jumlah resource tersebut.
Jangan ubah parameter ini. Alokasi resource yang tidak mencukupi dapat menyebabkan error kehabisan memori (OOM). Jika Anda harus mengubah parameter ini, lakukan pengujian menyeluruh terlebih dahulu.
Untuk memastikan stabilitas, jika Anda menentukan nilai untuk Required Cores, sistem akan melakukan optimasi resource. Jumlah resource aktual yang digunakan untuk menjalankan kueri SQL adalah max(required_cores, estimated_resources * 0.5).
-- Nilai default 0 mengaktifkan estimasi resource otomatis.
SET hg_experimental_serverless_computing_required_cores = XX;
-- Reset konfigurasi.
reset hg_experimental_serverless_computing_required_cores;Contoh:
-- Gunakan resource komputasi tanpa server untuk menjalankan kueri SQL.
SET hg_computing_resource = 'serverless';
-- Resource komputasi untuk komputasi tanpa server tidak diestimasi oleh sistem. Jumlah resource yang benar-benar diminta adalah max(96, system_estimated_resources * 0.5).
SET hg_experimental_serverless_computing_required_cores = 96;
-- Jalankan kueri SQL.
INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- Reset konfigurasi.
reset hg_computing_resource;
reset hg_experimental_serverless_computing_required_cores;Sesuaikan strategi Required Cores
Jika Anda merasa jumlah resource komputasi yang diestimasi secara otomatis oleh sistem tidak mencukupi atau berlebihan, Anda dapat memodifikasi parameter berikut untuk menyesuaikan strategi estimasi Required Cores.
Nilai default parameter ini adalah 4, yang merepresentasikan kebijakan netral.
Jika sistem meremehkan resource yang dibutuhkan, Anda dapat menaikkan nilai parameter tersebut. Misalnya, jika Anda mengatur nilainya menjadi 8, permintaan yang semula membutuhkan 60 CU akan disesuaikan menjadi 120 CU.
Jika sistem melebih-lebihkan resource yang dibutuhkan, Anda dapat menurunkan nilai parameter tersebut. Misalnya, jika Anda mengatur nilainya menjadi 2, permintaan yang semula membutuhkan 60 CU akan disesuaikan menjadi 30 CU.
-- Modifikasi di tingkat SQL
SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;
-- Modifikasi di tingkat pengguna
ALTER USER "ROLE_NAME" IN DATABASE DB_NAME SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;
-- Modifikasi di tingkat DB
ALTER DATABASE DB_NAME SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;