全部产品
Search
文档中心

ApsaraDB for SelectDB:Pengelolaan Variabel

更新时间:Jul 30, 2025

Topik ini menjelaskan cara mengelola dan menggunakan variabel di ApsaraDB for SelectDB. Topik ini juga menjelaskan cara mengonfigurasi variabel zona waktu. Topik ini membantu Anda lebih baik menggunakan variabel dari ApsaraDB for SelectDB untuk memenuhi kebutuhan bisnis Anda.

Variabel

Variabel di ApsaraDB for SelectDB terbagi menjadi dua kategori: variabel spesifik untuk ApsaraDB for SelectDB dan variabel yang kompatibel dengan protokol klien MySQL. Untuk informasi lebih lanjut, lihat Lampiran.

Kueri dan konfigurasi variabel

Kueri variabel

Gunakan pernyataan SHOW VARIABLES [LIKE 'xxx']; untuk menampilkan semua atau variabel tertentu. Contoh kode:

SHOW VARIABLES;
SHOW VARIABLES LIKE '%time_zone%';

Konfigurasi variabel

Variabel dapat dikonfigurasi secara global atau sesi. Variabel global berlaku untuk seluruh sistem, sedangkan variabel sesi hanya berlaku untuk sesi saat ini.

Untuk mengonfigurasi variabel sesi, gunakan pernyataan SET var_name=xxx;. Contoh kode:

SET exec_mem_limit = 137438953472;
SET forward_to_master = true;
SET time_zone = "Asia/Shanghai";

Untuk mengonfigurasi variabel global, gunakan pernyataan SET GLOBAL var_name=xxx;. Nilai yang dikonfigurasi akan berlaku untuk sesi saat ini dan sesi berikutnya. Contoh kode:

SET GLOBAL exec_mem_limit = 137438953472
Penting

Hanya pengguna admin yang dapat mengonfigurasi variabel global.

Variabel berikut dapat dikonfigurasi secara global atau sesi:

  • time_zone

  • wait_timeout

  • sql_mode

  • enable_profile

  • query_timeout

  • insert_timeout

  • exec_mem_limit

  • batch_size

  • allow_partition_column_nullable

  • insert_visible_timeout_ms

  • enable_fold_constant_by_be

Variabel berikut hanya dapat dikonfigurasi secara global:

  • default_rowset_type

  • default_password_lifetime

  • password_history

  • validate_password_policy

Selain itu, Anda dapat menggunakan ekspresi konstan untuk mengonfigurasi variabel. Contoh kode:

SET exec_mem_limit = 10 * 1024 * 1024 * 1024;
SET forward_to_master = concat('tr', 'u', 'e');

Konfigurasi variabel dalam pernyataan kueri

Dalam beberapa skenario, Anda dapat mengonfigurasi variabel untuk kueri tertentu menggunakan petunjuk SET_VAR. Variabel yang dikonfigurasi hanya berlaku untuk satu pernyataan. Contoh kode:

SELECT /*+ SET_VAR(exec_mem_limit = 8589934592) */ name FROM people ORDER BY name;
SELECT /*+ SET_VAR(query_timeout = 1, enable_partition_cache=true) */ sleep(3);
Catatan

Komentar harus dimulai dengan /*+ dan mengikuti pernyataan SELECT.

Variabel zona waktu

Variabel zona waktu mempengaruhi banyak fungsi dan nilai variabel di ApsaraDB for SelectDB. Untuk memenuhi kebutuhan bisnis di berbagai wilayah, ApsaraDB for SelectDB mendukung pengaturan zona waktu kustom.

ApsaraDB for SelectDB menyediakan dua variabel zona waktu:

  • system_time_zone: Zona waktu sistem kluster yang dikonfigurasi otomatis saat server mulai. Pengaturan ini tidak dapat diubah.

  • time_zone: Zona waktu saat ini kluster yang dapat diubah.

Kueri dan konfigurasi variabel zona waktu

Contoh kueri variabel zona waktu:

SHOW variables LIKE '%time_zone%'

Contoh konfigurasi zona waktu sesi:

SET [GLOBAL] time_zone = 'Asia/Shanghai'
Catatan

Jika kata kunci GLOBAL digunakan, zona waktu yang dikonfigurasi juga berlaku untuk semua sesi berikutnya dari kluster ApsaraDB for SelectDB saat ini.

Format zona waktu

Anda dapat menentukan nilai variabel zona waktu dalam beberapa format. ApsaraDB for SelectDB mendukung format standar berikut:

  • Format bernama standar, seperti Asia/Shanghai dan America/Los_Angeles.

  • Format offset standar, seperti +02:30 dan -10:00.

  • Format singkatan:

    • Greenwich Mean Time (GMT) dan Coordinated Universal Time (UTC), setara dengan zona waktu +00:00.

    • Central Standard Time (CST), setara dengan zona waktu Asia/Shanghai.

  • Huruf tunggal Z, mewakili zona waktu Zulu dan setara dengan zona waktu +00:00.

Catatan

Karena implementasi metode impor data yang berbeda, ApsaraDB for SelectDB mungkin mendukung format zona waktu lain jika metode impor data tertentu digunakan. Kami merekomendasikan agar Anda tidak bergantung pada format zona waktu lain di lingkungan produksi. ApsaraDB for SelectDB dapat mengubah metode pemrosesan format zona waktu lain kapan saja.

Dampak pengaturan zona waktu

Fungsi

Pengaturan zona waktu mempengaruhi nilai yang dikembalikan oleh fungsi waktu seperti NOW() dan CURTIME(), serta nilai waktu dalam pernyataan SHOW LOAD dan SHOW BACKENDS. Namun, pengaturan zona waktu tidak mempengaruhi kolom kunci partisi tipe waktu dalam pernyataan CREATE TABLE atau tampilan nilai yang disimpan sebagai tipe DATE or DATETIME.

Fungsi berikut dipengaruhi oleh pengaturan zona waktu:

  • FROM_UNIXTIME: Mengembalikan tanggal dan waktu di zona waktu yang ditentukan berdasarkan timestamp UTC. Jika zona waktu CST digunakan, FROM_UNIXTIME(0) mengembalikan 1970-01-01 08:00:00.

  • UNIX_TIMESTAMP: Mengembalikan timestamp UTC berdasarkan tanggal dan waktu yang ditentukan di zona waktu yang ditentukan. Jika zona waktu CST digunakan, UNIX_TIMESTAMP('1970-01-01 08:00:00') mengembalikan 0.

  • CURTIME: Mengembalikan waktu saat ini di zona waktu yang ditentukan.

  • NOW: Mengembalikan tanggal dan waktu saat ini di zona waktu yang ditentukan.

  • CONVERT_TZ: Mengonversi tanggal dan waktu di zona waktu yang ditentukan ke zona waktu lain.

Nilai tipe waktu

Saat mengimpor data tipe DATE, DATEV2, DATETIME, atau DATETIMEV2, ApsaraDB for SelectDB mendukung konversi zona waktu.

Jika data berisi zona waktu, seperti 2020-12-12 12:12:12+08:00, dan zona waktu saat ini dari kluster adalah +00:00, data yang diimpor dikonversi menjadi 2020-12-12 04:12:12.

Jika data tidak berisi zona waktu, seperti 2020-12-12 12:12:12, waktu tersebut dianggap sebagai waktu absolut dan tidak dikonversi.

Waktu daylight saving

Daylight saving time adalah offset waktu aktual dari zona waktu bernama, yang berubah pada tanggal-tanggal tertentu.

Contohnya, zona waktu America/Los_Angeles memiliki penyesuaian daylight saving time sekitar Maret hingga November setiap tahun. Offset waktu berubah dari -08:00 menjadi -07:00 saat daylight saving time dimulai pada bulan Maret, dan berubah dari -07:00 menjadi -08:00 saat daylight saving time berakhir pada bulan November.

Jika Anda tidak menggunakan daylight saving time, atur variabel time_zone menjadi -08:00 bukan America/Los_Angeles.

Sumber data

Data zona waktu mencakup nama zona waktu, offset waktu, dan perubahan daylight saving time. Pada mesin tempat node backend (BE) ditempatkan, data zona waktu dapat ditemukan di sumber berikut:

  1. Direktori yang dikembalikan oleh perintah TZDIR.

  2. Direktori /usr/share/zoneinfo.

  3. Direktori zoneinfo yang dihasilkan di direktori penerapan BE dari ApsaraDB for SelectDB.

ApsaraDB for SelectDB mencari data zona waktu di sumber di atas secara berurutan. Jika data ditemukan, data tersebut digunakan. Jika tidak ada data yang ditemukan, node BE gagal memulai.

Praktik terbaik

Data sensitif zona waktu

ApsaraDB for SelectDB kompatibel dengan data yang diimpor dari zona waktu berbeda. Pengaturan zona waktu dipengaruhi oleh tiga faktor:

  • Zona waktu saat ini kluster, yang dikonfigurasi oleh variabel sesi time_zone.

  • Zona waktu yang dikonfigurasi oleh header timezone selama impor data menggunakan metode seperti Stream Load atau Broker Load.

  • Zona waktu literal dari data, seperti +08:00 dalam 2023-12-12 08:00:00+08:00.

Data tipe waktu seperti DATETIME di kluster ApsaraDB for SelectDB dapat dibagi menjadi dua kategori: waktu absolut dan waktu di zona waktu tertentu.

  • Waktu absolut: Format waktu data tidak mengandung zona waktu, dan tidak ada zona waktu yang ditentukan saat data diimpor. Contoh: 2023-12-12 08:00:00. Data ini independen dari zona waktu dan tidak dipengaruhi oleh pengaturan zona waktu.

  • Waktu di zona waktu tertentu: Format waktu data mengandung zona waktu. Saat data ini diimpor, data tersebut dipengaruhi oleh pengaturan zona waktu. Contoh: "2020-12-12 12:12:12+02:00".

    • Jika data diimpor menggunakan pernyataan INSERT INTO, data tersebut dipengaruhi oleh variabel sesi time_zone.

    • Jika data diimpor menggunakan metode seperti Stream Load, data tersebut dipengaruhi oleh header timezone dari Stream Load. Jika pengaturan header bertentangan dengan variabel sesi time_zone, pengaturan header yang diutamakan.

    Zona waktu tertentu merujuk pada zona waktu saat ini kluster, yang dikonfigurasi oleh variabel sesi time_zone. Variabel ini dikonfigurasi sebelum data diimpor dan tidak lagi dimodifikasi.

Untuk praktik terbaik, kami merekomendasikan agar Anda tidak memodifikasi variabel sesi time_zone. Contoh kode:

mysql> SELECT@@time_zone;
+----------------+
| @@time_zone    |
+----------------+
| Asia/Hong_Kong |
+----------------+
1 row in set (0.12 sec)
--- Zona waktu literal dari data yang akan diimpor adalah +02:00.
mysql> INSERT INTO dtv23 VALUES('2020-12-12 12:12:12+02:00'); 
Query OK, 1 row affected (0.27 sec)

mysql> SELECT* FROM dtv23;
--- Data yang diimpor dikonversi ke waktu di zona waktu Asia/Hong_Kong, yang merupakan zona waktu saat ini dari kluster ApsaraDB for SelectDB. Zona waktu ini juga digunakan untuk impor dan kueri berikutnya.
+-------------------------+
| k0                      |
+-------------------------+
| 2020-12-12 18:12:12.000 | 
+-------------------------+
1 row in set (0.19 sec)

mysql> SET time_zone = 'America/Los_Angeles';
Query OK, 0 rows affected (0.15 sec)

mysql> SELECT* FROM dtv23;
--- Jika Anda memodifikasi variabel sesi time_zone, nilai waktu tidak berubah sesuai tetapi maknanya bervariasi berdasarkan zona waktu yang dikonfigurasi. Ini menyebabkan kebingungan dalam kueri berikutnya. 
+-------------------------+
| k0                      |
+-------------------------+
| 2020-12-12 18:12:12.000 | 
+-------------------------+
1 row in set (0.18 sec)

mysql> insert into dtv23 values('2020-12-12 12:12:12+02:00');
Query OK, 1 row affected (0.17 sec)

mysql> SELECT* FROM dtv23;
--- Hasil kueri salah. 
+-------------------------+
| k0                      |
+-------------------------+
| 2020-12-12 02:12:12.000 |
| 2020-12-12 18:12:12.000 |
+-------------------------+ 
2 rows in set (0.19 sec)

Secara keseluruhan, perhatikan hal berikut untuk praktik terbaik pengaturan zona waktu:

  • Sebelum mengimpor data ke kluster, konfirmasikan zona waktu saat ini kluster dan konfigurasikan variabel sesi time_zone berdasarkan kebutuhan bisnis Anda. Jangan modifikasi variabel ini setelah data diimpor.

  • Jika Anda menggunakan metode impor data, pastikan pengaturan header timezone sama dengan pengaturan variabel sesi time_zone.

  • Untuk waktu absolut, impor data tanpa akhiran zona waktu. Untuk waktu di zona waktu tertentu, impor data dengan akhiran zona waktu tertentu. ApsaraDB for SelectDB akan mengonversi waktu di zona waktu tertentu ke waktu di zona waktu yang dikonfigurasi oleh variabel sesi time_zone.

Daylight saving time

Waktu mulai dan akhir daylight saving time didasarkan pada data zona waktu saat ini, yang mungkin tidak sepenuhnya sesuai dengan waktu resmi yang dikonfirmasi oleh lokasi zona waktu untuk tahun berjalan. Data zona waktu dikelola oleh Internet Corporation for Assigned Names and Numbers (ICANN). Jika Anda perlu menggunakan waktu mulai dan akhir daylight saving time yang secara resmi dikonfirmasi oleh lokasi zona waktu untuk tahun berjalan, pastikan sumber data yang dipilih oleh ApsaraDB for SelectDB mencakup data zona waktu terbaru yang diterbitkan oleh ICANN. Untuk informasi lebih lanjut tentang cara mengunduh data zona waktu terbaru, lihat Referensi.

Lampiran

Variabel yang didukung

Variabel Tipe BOOLEAN

Variabel ini digunakan untuk mengaktifkan atau menonaktifkan fitur. Nilai valid adalah true dan false.

Variabel

Deskripsi

delete_without_partition

Menentukan apakah akan menghapus data tanpa menentukan partisi saat Anda mengeksekusi pernyataan DELETE dan secara otomatis menerapkan operasi DELETE ke semua partisi. Nilai default: false.

Penting

Jika operasi DELETE diterapkan secara otomatis ke semua partisi, durasi pernyataan DELETE diperpanjang dan sejumlah besar tugas dipicu. Ini memperpanjang durasi operasi DELETE. Kami merekomendasikan agar Anda tidak mengaktifkan fitur ini.

disable_colocate_join

Menentukan apakah akan menonaktifkan fitur Colocation Join. Nilai default: false.

Nilai false menentukan bahwa fitur diaktifkan. Nilai true menentukan bahwa fitur dinonaktifkan. Jika fitur ini dinonaktifkan, rencana eksekusi tidak mencoba melakukan operasi Colocation Join.

enable_bucket_shuffle_join

Menentukan apakah akan mengaktifkan fitur Bucket Shuffle Join. Nilai default: true.

Nilai true menentukan bahwa fitur diaktifkan. Nilai false menentukan bahwa fitur dinonaktifkan. Jika fitur ini dinonaktifkan, rencana eksekusi tidak mencoba melakukan operasi Bucket Shuffle Join.

disable_streaming_preaggregations

Menentukan apakah akan menonaktifkan pra-agregasi streaming. Nilai default: false.

Nilai false menentukan bahwa fitur diaktifkan. Variabel ini tidak dapat dimodifikasi.

enable_insert_strict

Menentukan apakah akan mengaktifkan mode strict saat data diimpor menggunakan pernyataan INSERT. Nilai default: false.

Nilai false menentukan bahwa mode strict dinonaktifkan.

enable_spilling

Menentukan apakah akan mengaktifkan pengurutan untuk jumlah data yang besar. Nilai default: false.

Nilai false menentukan bahwa fitur dinonaktifkan. Fitur ini diaktifkan jika Anda mengatur variabel enable_spilling menjadi true dan tidak menentukan kondisi LIMIT untuk klausa ORDER BY.

Setelah fitur ini diaktifkan, data sementara kueri disimpan di direktori doris-scratch/ dari direktori data BE. Setelah kueri selesai, data sementara dibersihkan.

Fitur ini digunakan untuk mengurutkan jumlah data yang besar menggunakan memori terbatas.

Penting

Fitur ini bersifat eksperimental. Kami merekomendasikan agar Anda tidak mengaktifkan fitur ini di lingkungan produksi.

forward_to_master

Menentukan apakah akan meneruskan beberapa pernyataan SHOW ke node frontend master (FE) untuk dieksekusi. Nilai default: true.

Nilai true menentukan bahwa fitur diaktifkan. Instans ApsaraDB for SelectDB memiliki beberapa node FE, salah satunya adalah node FE master. Anda dapat terhubung ke salah satu node FE untuk melakukan operasi penuh fitur. Namun, setelah Anda mengeksekusi beberapa pernyataan SHOW, informasi rinci hanya dapat diperoleh dari node FE master. Misalnya, jika Anda tidak meneruskan pernyataan SHOW BACKENDS; ke node FE master, Anda hanya dapat memperoleh beberapa informasi dasar seperti apakah node BE hidup. Jika Anda meneruskan pernyataan ke node FE master, Anda dapat memperoleh informasi lebih rinci seperti waktu startup dan waktu heartbeat terakhir dari node BE.

Jika Anda meneruskan pernyataan berikut ke node FE master, informasi lebih rinci dapat dikembalikan:

  • SHOW FRONTENDS;

    Mengembalikan informasi heartbeat terakhir.

  • SHOW BACKENDS;

    Mengembalikan informasi waktu startup, informasi heartbeat terakhir, dan informasi kapasitas disk.

  • SHOW BROKER;

    Mengembalikan informasi waktu startup dan informasi heartbeat terakhir.

  • SHOW TABLET;, SHOW REPLICA DISTRIBUTION;, atau SHOW REPLICA STATUS;

    Mengembalikan informasi tablet yang disimpan dalam metadata node FE master. Dalam kebanyakan kasus, informasi tablet yang sama disimpan dalam metadata node FE yang berbeda. Jika terjadi kesalahan, Anda dapat menggunakan metode ini untuk membandingkan perbedaan antara informasi tablet yang disimpan dalam metadata node FE saat ini dan yang ada di metadata node FE master.

  • SHOW PROC;

    Mengembalikan informasi tentang sistem proc yang disimpan dalam metadata node FE master. Anda dapat menggunakan informasi yang diperoleh untuk perbandingan metadata.

enable_profile

Menentukan apakah akan menampilkan profil kueri. Nilai default: false.

Nilai false menentukan bahwa fitur dinonaktifkan. Secara default, BE mengirimkan profil kueri ke FE untuk menampilkan kesalahan hanya jika terjadi kesalahan dalam kueri. Ini memerlukan overhead jaringan tertentu dan mengurangi kinerja kueri dengan konkurensi tinggi. Oleh karena itu, BE tidak mengirimkan profil kueri yang berhasil ke FE.

Jika Anda ingin menganalisis profil kueri, Anda dapat mengatur variabel ini menjadi true sebelum melakukan kueri. Setelah kueri selesai, Anda dapat melihat profilnya di halaman web node FE yang terhubung saat ini menggunakan URL berikut:

fe_host:fe_http_port/query

Halaman web menampilkan 100 kueri terakhir setelah variabel enable_profile diatur menjadi true.

rewrite_count_distinct_to_bitmap_hll

Menentukan apakah akan mengganti fungsi COUNT DISTINCT dengan fungsi BITMAP_UNION_COUNT atau HLL_UNION_AGG untuk data dalam format bitmap atau HyperLogLog (HLL). Nilai default: true.

allow_partition_column_nullable

Menentukan apakah kolom kunci partisi dapat didefinisikan sebagai NULL saat Anda membuat tabel. Nilai default: true.

Nilai true menentukan bahwa kolom kunci partisi dapat didefinisikan sebagai NULL. Nilai false menentukan bahwa kolom kunci partisi harus didefinisikan sebagai NOT NULL.

enable_exchange_node_parallel_merge

Menentukan apakah node pertukaran memulai beberapa thread untuk menggabungkan data secara paralel selama proses pengurutan kueri. Ini mengurangi konsumsi CPU dan memori tambahan. Nilai default: false.

Dalam kueri yang hasilnya diurutkan, ketika node upstream menerima data dari node downstream, data diurutkan pada node pertukaran untuk memastikan bahwa data akhir terurut. Namun, jika node pertukaran memulai satu thread untuk menggabungkan sejumlah besar data dari beberapa node downstream, kemacetan titik tunggal penggabungan mungkin terjadi pada node pertukaran.

Untuk menyelesaikan masalah ini, ApsaraDB for SelectDB mengoptimalkan proses penggabungan. Jika node upstream menerima data dari beberapa node downstream, node pertukaran memulai beberapa thread untuk menggabungkan data secara paralel guna mempercepat proses pengurutan.

extract_wide_range_expr

Menentukan apakah akan mengaktifkan faktor umum lebar. Nilai default: false.

enable_fold_constant_by_be

Menentukan apakah akan melakukan perhitungan folding konstan di BE. Nilai default: false.

Nilai false menentukan bahwa perhitungan dilakukan di FE. Nilai true menentukan bahwa perhitungan dilakukan di BE menggunakan permintaan remote procedure call (RPC).

disable_join_reorder

Menentukan apakah akan menonaktifkan semua algoritma Join Reorder otomatis. Nilai default: false.

Nilai false menentukan bahwa semua algoritma Join Reorder otomatis diaktifkan. Nilai true menentukan bahwa semua algoritma Join Reorder otomatis dinonaktifkan. Dalam hal ini, operasi JOIN dilakukan berdasarkan urutan tabel dalam pernyataan SQL.

enable_infer_predicate

Menentukan apakah akan melakukan inferensi predikat. Nilai default: true.

Nilai true menentukan bahwa inferensi predikat dilakukan. Nilai false menentukan bahwa ApsaraDB for SelectDB tidak melakukan inferensi predikat, tetapi menggunakan predikat asli untuk melakukan operasi terkait.

trim_tailing_spaces_for_external_table_query

Menentukan apakah akan memotong spasi tambahan di bidang saat Anda menanyakan tabel eksternal Hive. Nilai default: false.

enable_inverted_index_query

Menentukan apakah akan mengaktifkan indeks terbalik. Nilai default: true.

skip_missing_version

Menentukan apakah akan mengabaikan versi yang hilang. Nilai default: false.

Dalam beberapa skenario ekstrem, semua replika tablet dalam tabel memiliki versi yang hilang. Tablet ini tidak dapat dipulihkan. Akibatnya, seluruh tabel tidak dapat dikueri.

Variabel ini dapat digunakan untuk mengontrol perilaku kueri. Jika Anda mengatur variabel ini menjadi true, kueri mengabaikan versi terlihat dari tablet yang direkam di FE dan menggunakan versi replika sebagai gantinya. Jika replika di BE memiliki versi yang hilang, kueri melewati versi yang hilang tersebut dan hanya mengembalikan data dari versi yang ada.

Selain itu, kueri selalu mencoba memilih replika versi sukses terbaru di antara semua replika bertahan di BE untuk memulihkan sebanyak mungkin data.

Kami merekomendasikan agar Anda mengatur variabel ini menjadi true hanya dalam skenario darurat di mana Anda perlu memulihkan data tabel untuk kueri.

Penting

Variabel ini bertentangan dengan variabel use_fix_replica. Variabel ini hanya berlaku jika variabel use_fix_replica diatur menjadi -1.

enable_parquet_lazy_materialization

Menentukan apakah akan mengaktifkan teknologi materialisasi lambat untuk Parquet Reader. Nilai default: true.

enable_orc_lazy_materialization

Menentukan apakah akan mengaktifkan teknologi materialisasi lambat untuk ORC Reader. Nilai default: true.

enable_strong_consistency_read

Menentukan apakah akan mengaktifkan konsistensi kuat untuk pembacaan data. Nilai default: true.

Secara default, ApsaraDB for SelectDB mendukung konsistensi kuat dalam sesi yang sama. Perubahan data dalam sesi yang sama terlihat secara real-time. Jika Anda ingin mengaktifkan konsistensi kuat untuk pembacaan data antar sesi, atur variabel ini menjadi true.

truncate_char_or_varchar_columns

Menentukan apakah akan memotong kolom tipe CHAR atau VARCHAR berdasarkan panjang maksimum dalam skema tabel. Nilai default: false.

Jika Anda mengelola data menggunakan tabel eksternal, panjang maksimum kolom tipe CHAR atau VARCHAR dalam skema tabel mungkin tidak konsisten dengan yang ada dalam skema file Parquet atau ORC dasar.

Jika Anda mengatur variabel ini menjadi true, ApsaraDB for SelectDB memotong kolom tipe CHAR atau VARCHAR berdasarkan panjang maksimum dalam skema tabel.

jdbc_clickhouse_query_final

Menentukan apakah akan menambahkan kata kunci final saat Anda menggunakan fitur katalog JDBC untuk menanyakan data ClickHouse. Nilai default: false.

Variabel ini digunakan untuk menghapus duplikat bersama dengan mesin tabel ReplacingMergeTree dari ClickHouse.

enable_memtable_on_sink_node

Menentukan apakah akan mengaktifkan tabel memori pada node Data Sink selama impor data. Nilai default: false.

Jika Anda mengatur variabel ini menjadi true, ApsaraDB for SelectDB membuat tabel memori pada node Data Sink dan mengirimkan segmen ke node BE lain menggunakan streaming bRPC. Ini mengurangi pekerjaan duplikat di antara replika, dan menghemat waktu untuk serialisasi dan deserialisasi data.

enable_unique_key_partial_update

Menentukan apakah akan mengaktifkan semantik pembaruan kolom parsial untuk pernyataan INSERT INTO. Nilai valid:

  • false (default)

  • true

Penting
  • Variabel ini tersedia hanya jika tabel menggunakan model Unique yang menggunakan mode Merge on Write (MOW).

  • Jika Anda mengatur variabel enable_unique_key_partial_update dan enable_insert_strict menjadi true, Anda hanya dapat mengeksekusi pernyataan INSERT INTO untuk memperbarui data. Nilai default true dari variabel enable_insert_strict menunjukkan bahwa mode ketat diaktifkan untuk pernyataan INSERT. Jika pernyataan INSERT INTO berisi kunci yang tidak ada di tabel, kesalahan akan dilaporkan.

  • Setelah Anda mengatur variabel ini menjadi true, jika Anda ingin mengeksekusi pernyataan INSERT INTO untuk memperbarui kolom tertentu dan menyisipkan data ke kolom, Anda harus mengatur variabel sesi enable_unique_key_partial_update menjadi true dan variabel sesi enable_insert_strict menjadi false. Untuk informasi lebih lanjut tentang pengaturan variabel, lihat Konfigurasikan variabel.

describe_extend_variant_column

Menentukan apakah akan menampilkan sub-kolom untuk kolom tipe VARIANT saat Anda menanyakan tabel. Nilai default: false.

dry_run_query

Menentukan apakah hanya mengembalikan jumlah baris dalam hasil kueri. Nilai default: false.

Jika Anda mengatur variabel ini menjadi true, ApsaraDB for SelectDB tidak lagi mengembalikan set hasil aktual untuk kueri, tetapi hanya mengembalikan jumlah baris dalam hasil. Jika Anda mengimpor atau menyisipkan data, node Data Sink membuang data alih-alih menulis data.

Variabel ini dapat digunakan untuk menghindari jumlah waktu yang diperlukan untuk mentransmisikan set hasil saat Anda menguji sejumlah besar dataset. ApsaraDB for SelectDB hanya menghabiskan waktu dalam menjalankan kueri dasar.

SELECT* FROM bigtable;
+--------------+
| ReturnedRows |
+--------------+
| 10000000     |
+--------------+

drop_table_if_ctas_failed

Menentukan apakah akan menghapus tabel yang dibuat saat Anda mengeksekusi pernyataan CREATE TABLE AS SELECT tetapi terjadi kesalahan penulisan. Nilai default: true.

show_user_default_role

Menentukan apakah akan menampilkan peran implisit setiap pengguna dalam hasil pernyataan SHOW ROLES. Nilai default: false.

group_by_and_having_use_alias_first

Menentukan apakah akan menggunakan alias kolom dalam klausa GROUP BY dan HAVING alih-alih mencari nama kolom dari klausa From. Nilai default: false.

enable_file_cache

Menentukan apakah akan mengaktifkan cache file blok. Nilai default: false.

Variabel ini berlaku hanya jika diatur ke true dalam file be.conf dari node BE. Jika diatur ke false dalam file be.conf, cache file blok dinonaktifkan pada node BE.

enable_auto_analyze

Menentukan apakah akan mengaktifkan fitur pengumpulan statistik otomatis. Nilai default: true.

enable_cost_based_join_reorder

Menentukan apakah akan mengaktifkan Join Reorder untuk secara otomatis menyesuaikan urutan tabel saat Anda melakukan operasi JOIN.

Nilai default: false.

enable_fallback_to_original_planner

Menentukan apakah akan secara otomatis kembali ke pengoptimal lama berdasarkan skenario setelah pengoptimal baru diaktifkan. Nilai default: false.

enable_odbc_transcation

Menentukan apakah akan mengaktifkan fitur transaksi untuk menulis data ke katalog JDBC. Nilai default: false.

enable_parallel_outfile

Menentukan apakah akan mengaktifkan pemindaian paralel untuk pernyataan SELECT INTO OUTFILE. Nilai default: false.

enable_sql_cache

Menentukan apakah akan mengaktifkan cache untuk pernyataan SQL. Nilai default: false.

enable_unicode_name_support

Menentukan apakah mendukung nama tabel dan kolom yang mengandung karakter Unicode. Nilai default: false.

Jika Anda mengatur variabel ini menjadi true, nama kolom dalam bahasa Cina didukung.

enable_vectorized_engine

Menentukan apakah akan mengaktifkan mesin vektorisasi untuk mempercepat kueri. Nilai default: true.

experimental_enable_nereids_planner

Menentukan apakah akan mengaktifkan pengoptimal baru. Fitur ini bersifat eksperimental. Nilai default: true.

experimental_enable_pipeline_engine

Menentukan apakah akan mengaktifkan mesin eksekusi Pipeline. Fitur ini bersifat eksperimental. Nilai default: true.

experimental_enable_single_replica_insert

Menentukan apakah akan mengaktifkan fitur impor replika tunggal. Nilai default: false.

Jika Anda mengatur variabel ini menjadi true, ApsaraDB for SelectDB memilih satu replika dari beberapa replika sebagai replika utama dan hanya melakukan komputasi pada replika utama. Replika lainnya adalah replika sekunder. Saat semua file data ditulis ke replika utama, node tempat setiap replika sekunder berada dapat menarik file data dari replika utama. Ini menyinkronkan data antar replika.

faster_float_convert

Menentukan apakah akan mengaktifkan algoritma konversi bilangan floating-point yang lebih cepat. Harap diperhatikan bahwa algoritma ini mempengaruhi format output. Nilai default: false.

enable_page_cache

Menentukan apakah akan mengaktifkan cache tingkat halaman. Nilai default: true.

strict_mode

Menentukan apakah akan mengaktifkan mode ketat untuk impor data. Nilai default: false.

Variabel Konfigurasi

Nilai dan nilai valid dari variabel konfigurasi bervariasi berdasarkan konfigurasi.

Variabel

Deskripsi

auto_broadcast_join_threshold

Ambang batas untuk jumlah maksimum byte dari tabel yang disiarkan ke semua node saat Anda melakukan operasi JOIN. Nilai -1 menentukan bahwa fitur siaran dinonaktifkan.

ApsaraDB for SelectDB menyediakan metode Broadcast Join dan Shuffle Join.

Jika Anda menggunakan Broadcast Join, ApsaraDB for SelectDB memfilter data tabel kecil berdasarkan kondisi dan menyiarkannya ke setiap node tempat tabel besar berada untuk menghasilkan tabel hash dalam memori. Kemudian, ApsaraDB for SelectDB membaca data tabel besar dalam mode streaming untuk melakukan operasi Hash Join.

Jika Anda menggunakan Shuffle Join, ApsaraDB for SelectDB meng-hash data tabel kecil dan besar berdasarkan kunci gabungan, lalu melakukan operasi JOIN terdistribusi.

Jika tabel kecil berisi sedikit data, Broadcast Join memberikan kinerja yang lebih baik. Jika tabel kecil berisi banyak data, Shuffle Join memberikan kinerja yang lebih baik.

ApsaraDB for SelectDB secara otomatis mencoba menggunakan Broadcast Join. Anda juga dapat secara eksplisit menentukan metode implementasi setiap operator join. ApsaraDB for SelectDB menyediakan variabel auto_broadcast_join_threshold untuk membatasi rasio memori yang digunakan oleh tabel hash terhadap memori eksekusi keseluruhan saat menggunakan Broadcast Join. Rasio maksimum bisa dalam rentang 0 hingga 1. Secara default, rasio maksimum adalah 0,8. Jika memori yang digunakan oleh tabel hash melebihi batas ini, ApsaraDB for SelectDB secara otomatis beralih ke menggunakan Shuffle Join. Memori eksekusi keseluruhan diperkirakan oleh pengoptimal kueri.

Catatan

Kami merekomendasikan agar Anda tidak menggunakan variabel ini untuk mengubah metode join. Jika Anda ingin menentukan metode join yang digunakan, kami merekomendasikan agar Anda menggunakan petunjuk, seperti join[shuffle].

batch_size

Jumlah baris dalam satu paket yang ditransmisikan oleh setiap node selama kueri.

Secara default, satu paket berisi 1.024 baris. Setiap kali node sumber menghasilkan 1.024 baris data, data tersebut dikemas dan dikirim ke node tujuan. Jumlah baris yang lebih besar dalam satu paket meningkatkan throughput kueri dalam skenario di mana sejumlah besar data dipindai. Namun, jumlah baris yang lebih besar dalam satu paket dapat meningkatkan latensi kueri dalam skenario di mana sejumlah kecil data dipertanyakan. Ini juga meningkatkan overhead memori kueri.

Kami merekomendasikan agar Anda mengatur variabel ini ke nilai dalam rentang 1024 hingga 4096.

default_order_by_limit

Jumlah entri data default yang dikembalikan setelah menggunakan klausa ORDER BY.

Nilai default: -1, yang menentukan bahwa jumlah maksimum entri data setelah kueri dikembalikan. Batas atasnya adalah nilai maksimum dari tipe data LONG.

exec_mem_limit

Memori maksimum yang digunakan oleh satu kueri. Secara default, satu kueri dapat menggunakan hingga 2 GB memori. Anda dapat menentukan memori maksimum dalam satuan byte, KB, MB, GB, TB, atau PB. Jika Anda tidak menentukan satuan, byte digunakan secara default.

Variabel ini digunakan untuk membatasi memori yang dapat digunakan oleh instance fragmen dalam rencana eksekusi. Rencana eksekusi dapat dibagi menjadi beberapa instance. Sebuah node BE mungkin menjalankan satu atau lebih instance. Oleh karena itu, variabel ini tidak secara akurat membatasi penggunaan memori kueri di kluster atau penggunaan memori kueri pada node BE. Batas sebenarnya ditentukan berdasarkan rencana eksekusi yang dihasilkan.

Dalam kebanyakan kasus, sejumlah besar memori hanya dikonsumsi pada beberapa node pemblokiran, seperti node pengurutan, node agregasi, dan node join. Namun, pada node lain, seperti node pemindaian, data dialirkan dan tidak menempati banyak memori.

Jika terjadi kesalahan Memory Exceed Limit, Anda dapat mencoba meningkatkan batas ini secara eksponensial, seperti 4 GB, 8 GB, atau 16 GB. Harap diperhatikan bahwa batas ini mungkin berfluktuasi beberapa MB dalam praktiknya.

lower_case_table_names

Kesensitifan huruf nama tabel. Nilai valid:

  • 0 (default): Nama tabel bersifat case-sensitive.

  • 1: Nama tabel tidak case-sensitive. ApsaraDB for SelectDB mengonversi nama tabel ke huruf kecil saat menyimpan atau menanyakan data. Keuntungannya adalah Anda dapat menggunakan nama tabel huruf kecil dan huruf besar dalam pernyataan SQL. Contoh kode berikut memberikan contoh:

    SHOW tables;  
    +------------------+
    | Tables_in_testdb |
    +------------------+
    | cost             |
    +------------------+
    
    SELECT* FROM COST WHERE COst.id < 100 ORDER BY cost.id;

    Kerugiannya adalah nama tabel huruf besar yang ditentukan dalam pernyataan CREATE TABLE tidak dapat diperoleh setelah tabel dibuat. Nama tabel yang dikembalikan oleh pernyataan SHOW TABLES selalu dalam huruf kecil.

  • 2: Nama tabel tidak case-sensitive. ApsaraDB for SelectDB menyimpan nama tabel yang ditentukan dalam pernyataan CREATE TABLE dan mengonversi nama tabel yang ditentukan ke huruf kecil untuk perbandingan selama kueri. Keuntungannya adalah nama tabel yang dikembalikan oleh pernyataan SHOW TABLES adalah nama yang ditentukan dalam pernyataan CREATE TABLE. Kerugiannya adalah Anda hanya dapat menggunakan nama tabel huruf kecil atau huruf besar dalam pernyataan SQL. Misalnya, Anda dapat menggunakan nama tabel COST untuk menanyakan tabel cost. Contoh kode:

    SELECT* FROM COST WHERE COST.id < 100 ORDER BY COST.id;

    Variabel ini kompatibel dengan MySQL. Anda harus mengonfigurasi variabel lower_case_table_names dalam file fe.conf saat kluster diinisialisasi. Setelah kluster diinisialisasi, Anda tidak dapat memodifikasi variabel dengan mengeksekusi pernyataan SET, atau dengan me-restart atau menaikkan skala kluster.

    Nama tabel tampilan sistem dalam database information_schema tidak case-sensitive. Dalam hal ini, nilai 0 setara dengan nilai 2 untuk variabel lower_case_table_names.

max_pushdown_conditions_per_column

Jumlah maksimum kondisi yang dapat didorong ke mesin penyimpanan untuk satu kolom dalam permintaan kueri. Untuk informasi lebih lanjut, lihat deskripsi item konfigurasi BE max_pushdown_conditions_per_column. Nilai default: -1, yang menentukan bahwa nilai yang dikonfigurasi dalam file be.conf digunakan. Jika Anda mengatur variabel ini ke nilai lebih besar dari 0, kueri dalam sesi saat ini menggunakan nilai variabel dan mengabaikan nilai yang dikonfigurasi dalam file be.conf.

max_scan_key_num

Jumlah maksimum kunci pemindaian yang dapat dibagi oleh node pemindaian dalam permintaan kueri. Untuk informasi lebih lanjut, lihat deskripsi item konfigurasi BE doris_max_scan_key_num. Nilai default: -1, yang menentukan bahwa nilai yang dikonfigurasi dalam file be.conf digunakan. Jika Anda mengatur variabel ini ke nilai lebih besar dari 0, kueri dalam sesi saat ini menggunakan nilai variabel dan mengabaikan nilai yang dikonfigurasi dalam file be.conf.

parallel_exchange_instance_num

Jumlah node pertukaran yang digunakan oleh node upstream untuk menerima data dari node downstream dalam rencana eksekusi. Nilai default: -1, yang menentukan bahwa jumlah node pertukaran sama dengan jumlah instance yang dijalankan pada node downstream.

Jika Anda mengatur variabel ini ke nilai lebih besar dari 0 dan kurang dari jumlah instance yang dijalankan pada node downstream, jumlah node pertukaran sama dengan nilai variabel.

Dalam rencana eksekusi terdistribusi, node upstream menggunakan satu atau lebih node pertukaran untuk menerima data dari instance yang dijalankan pada node BE downstream yang berbeda. Dalam kebanyakan kasus, jumlah node pertukaran sama dengan jumlah instance yang dijalankan pada node downstream.

Dalam beberapa skenario kueri agregat, jika sejumlah besar data dipindai di lapisan bawah tetapi jumlah data agregat kecil, Anda dapat mencoba mengatur variabel ini ke nilai yang lebih kecil. Ini mengurangi overhead sumber daya kueri agregat, seperti kueri agregat berdasarkan model Duplicate key.

analyze_timeout

Periode timeout pernyataan ANALYZE. Satuan: detik. Nilai default: 43200.

auto_analyze_end_time

Waktu akhir pengumpulan statistik otomatis.

auto_analyze_start_time

Waktu mulai pengumpulan statistik otomatis.

auto_analyze_table_width_threshold

Jumlah maksimum kolom dalam tabel yang berlaku untuk pengumpulan statistik otomatis. Jika jumlah kolom dalam tabel melebihi batas ini, tabel tidak berpartisipasi dalam pengumpulan statistik otomatis. Nilai default: 70.

div_precision_increment

Jumlah digit yang ingin Anda tambahkan ke skala hasil operasi pembagian yang dilakukan menggunakan operator /. Nilai default: 4.

external_agg_bytes_threshold

Penggunaan memori maksimum untuk operasi agregasi dalam kueri. Jika penggunaan memori melebihi batas ini, data dalam memori sementara ditulis ke disk.

external_sort_bytes_threshold

Penggunaan memori maksimum untuk operasi pengurutan dalam kueri. Jika penggunaan memori melebihi batas ini, data dalam memori sementara ditulis ke disk.

external_table_auto_analyze_interval_in_millis

Interval minimum di mana pengumpulan statistik otomatis dilakukan untuk tabel eksternal. Selama interval yang ditentukan, pengumpulan statistik otomatis hanya dilakukan sekali untuk tabel eksternal. Satuan: milidetik. Nilai default: 86400000.

fragment_transmission_compression_codec

Format kompresi yang akan digunakan selama transmisi data. Nilai default: lz4.

huge_table_auto_analyze_interval_in_millis

Interval minimum di mana pengumpulan statistik otomatis dilakukan untuk tabel besar. Selama interval yang ditentukan, pengumpulan statistik otomatis hanya dilakukan sekali untuk tabel yang ukurannya lebih besar dari lima kali ambang batas yang ditentukan oleh variabel huge_table_lower_bound_size_in_bytes. Nilai default: 0.

huge_table_default_sample_rows

Jumlah baris yang akan diambil sampel untuk tabel besar. Nilai default: 4194304.

huge_table_lower_bound_size_in_bytes

Ukuran minimum tabel yang akan diambil sampel untuk pengumpulan statistik otomatis. Jika ukuran tabel melebihi ambang batas ini, tabel tersebut diambil sampel selama pengumpulan statistik otomatis. Nilai default: 0.

ignore_runtime_filter_ids

Filter runtime yang akan diabaikan.

Secara default, variabel ini kosong.

max_filter_ratio

Rasio maksimum data yang dapat difilter. Misalnya, data difilter karena tidak sesuai dengan standar. Nilai default: 0.

max_instance_num

Jumlah maksimum tugas Pipeline yang dapat berjalan secara bersamaan untuk kueri SQL jika variabel parallel_pipeline_task_num tidak dikonfigurasi. Nilai default: 64.

parallel_pipeline_task_num

Jumlah tugas Pipeline yang berjalan secara bersamaan untuk kueri SQL. Nilai default: 0.

Jika Anda mengatur variabel ini ke 0, ApsaraDB for SelectDB secara otomatis mendeteksi jumlah core CPU pada setiap node BE dan mengatur jumlah tugas Pipeline bersamaan menjadi setengah dari jumlah core CPU, yang tidak boleh melebihi nilai variabel max_instance_num.

runtime_filter_type

Tipe filter runtime yang akan digunakan. Filter runtime berikut tersedia: Bloom filter, MinMax filter, predikat IN, IN atau Bloom filter, dan filter bitmap. Secara default, IN atau Bloom filter digunakan. Dalam beberapa kasus, kinerja ditingkatkan jika Anda menggunakan Bloom filter, MinMax filter, dan predikat IN secara bersamaan.

runtime_filter_mode

Kebijakan pushdown filter runtime. Kebijakan OFF, LOCAL, dan GLOBAL tersedia. Secara default, kebijakan GLOBAL digunakan.

runtime_filter_wait_time_ms

Durasi node pemindaian tabel kiri menunggu setiap filter runtime. Satuan: milidetik. Nilai default: 1000.

runtime_filters_max_num

Jumlah maksimum filter Bloom yang dapat digunakan dalam setiap kueri. Nilai default: 10.

runtime_bloom_filter_min_size

Panjang minimum filter Bloom. Satuan: byte. Nilai default: 1048576, yang menentukan 1 MB.

runtime_bloom_filter_max_size

Panjang maksimum filter Bloom. Satuan: byte. Nilai default: 16777216, yang menentukan 16 MB.

runtime_bloom_filter_size

Panjang default filter Bloom. Satuan: byte. Nilai default: 2097152, yang menentukan 2 MB.

runtime_filter_max_in_num

Jumlah maksimum baris dalam tabel kanan. Jika jumlah baris dalam tabel kanan melebihi batas ini, tidak ada predikat IN yang dapat dihasilkan. Nilai default: 1024.

parallel_fragment_exec_instance_num

Jumlah instance yang memproses rentang pemindaian pada setiap node BE. Nilai default: 1.

Rencana eksekusi menghasilkan serangkaian rentang pemindaian untuk menentukan rentang data yang akan dipindai. Data didistribusikan di beberapa node BE. Sebuah node BE mungkin memiliki satu atau lebih rentang pemindaian. Secara default, satu set rentang pemindaian pada setiap node BE diproses oleh hanya satu instance. Jika sumber daya mesin cukup, Anda dapat memodifikasi variabel ini untuk memungkinkan lebih banyak instance memproses satu set rentang pemindaian pada setiap node BE. Ini meningkatkan efisiensi kueri.

Jumlah instance yang memproses rentang pemindaian menentukan jumlah node upstream lainnya, seperti node agregasi dan node join. Ini juga meningkatkan konkurensi rencana eksekusi. Anda dapat memodifikasi variabel ini untuk meningkatkan efisiensi kueri besar. Namun, peningkatan konkurensi mengonsumsi lebih banyak sumber daya mesin, seperti CPU, memori, dan I/O disk.

query_timeout

Periode timeout kueri.

Variabel ini berlaku untuk semua pernyataan kueri dalam koneksi saat ini. Kami merekomendasikan agar Anda menggunakan variabel insert_timeout untuk pernyataan INSERT. Satuan: detik. Nilai default: 900, yang menentukan 15 menit.

insert_timeout

Periode timeout pernyataan INSERT. Variabel ini hanya berlaku untuk pernyataan INSERT. Kami merekomendasikan agar Anda menggunakan variabel ini jika dibutuhkan waktu lama untuk mengeksekusi pernyataan INSERT.

Satuan: detik. Nilai default: 14400, yang menentukan 4 jam.

Pada versi sebelumnya, nilai variabel query_timeout dapat ditingkatkan untuk mencegah timeout pernyataan INSERT. Untuk kompatibilitas dengan kebiasaan pengguna di versi sebelumnya, variabel insert_timeout tidak berlaku jika nilainya lebih kecil dari nilai variabel query_timeout.

send_batch_parallelism

Jumlah tugas bersamaan default yang mengirimkan data untuk diproses dalam batch untuk operasi INSERT stmt. Jika nilai variabel ini melebihi nilai item konfigurasi BE max_send_batch_parallelism_per_job, node Coordinator BE menggunakan nilai item konfigurasi BE max_send_batch_parallelism_per_job.

sql_mode

Mode SQL, yang membantu menampung gaya sintaks SQL yang berbeda dan tingkat ketat validasi data. Untuk informasi lebih lanjut, lihat SQL Mode.

sql_select_limit

Jumlah baris default yang dikembalikan oleh pernyataan SELECT, termasuk klausa SELECT dari pernyataan INSERT.

Secara default, tidak ada batasan.

time_zone

Zona waktu sesi saat ini. Nilai defaultnya sama dengan nilai variabel system_time_zone. Zona waktu ini mempengaruhi hasil beberapa fungsi waktu. Untuk informasi lebih lanjut, lihat bagian Variabel zona waktu dari topik ini.

wait_timeout

Periode timeout koneksi idle. Jika koneksi idle tidak berinteraksi dengan ApsaraDB for SelectDB dalam periode timeout, ApsaraDB for SelectDB menutup koneksi.

Satuan: detik. Nilai default: 28800, yang menentukan 8 jam.

default_rowset_type

Format penyimpanan default mesin penyimpanan pada node komputasi.

Nilai valid: alpha dan beta. Nilai default: beta.

use_v2_rollup

Menentukan apakah akan mendapatkan data dengan menggunakan indeks ROLLUP dalam format penyimpanan Segment V2 selama kueri.

Variabel ini digunakan untuk verifikasi saat fitur Segment V2 digunakan. Dalam kasus lain, kami merekomendasikan agar Anda tidak menggunakan variabel ini.

prefer_join_method

Metode join yang disukai antara Broadcast Join dan Shuffle Join jika biaya Broadcast Join sama dengan biaya Shuffle Join.

Nilai valid: broadcast dan shuffle.

insert_visible_timeout_ms

Periode timeout di mana ApsaraDB for SelectDB menunggu transaksi untuk melakukan commit dan data menjadi terlihat setelah operasi query dan insert dari pernyataan INSERT selesai.

Nilai default: 10000. Nilai minimum adalah 1000.

batas_sumber_daya_cpu

Overhead sumber daya dari sebuah kueri. Fitur ini bersifat eksperimen.

Variabel ini membatasi jumlah thread pemindaian untuk sebuah kueri pada node tunggal. Setelah jumlah thread pemindaian dibatasi, lapisan bawah mengembalikan data dengan kecepatan yang lebih rendah. Dengan cara ini, overhead sumber daya komputasi keseluruhan dari kueri dapat dibatasi. Jika Anda menetapkan variabel ini ke 2, sebuah kueri dapat menggunakan hingga dua thread pemindaian pada node tunggal.

Variabel ini menggantikan variabel parallel_fragment_exec_instance_num. Jika variabel parallel_fragment_exec_instance_num diatur ke 4 dan variabel ini diatur ke 2, empat instans pada node tunggal berbagi hingga dua thread pemindaian.

Variabel ini digantikan oleh properti pengguna cpu_resource_limit.

Nilai default: -1, yang menentukan tidak ada batasan.

return_object_data_as_binary

Menentukan apakah akan mengembalikan data dalam format bitmap atau HLL dalam hasil pernyataan SELECT.

Setelah Anda mengeksekusi pernyataan SELECT INTO OUTFILE, jika file yang diekspor dalam format CSV, data dalam format bitmap atau HLL dienkripsi dalam Base64. Jika file yang diekspor dalam format Parquet, data dalam format bitmap atau HLL disimpan sebagai larik byte.

Kode sampel berikut memberikan contoh dalam bahasa Java. Untuk informasi selengkapnya, lihat sampel.

try (Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:9030/test?user=root");
             Statement stmt = conn.createStatement()
) {
    stmt.execute("set return_object_data_as_binary=true"); // PENTING!!!
    ResultSet rs = stmt.executeQuery("SELECT uids from t_bitmap");
    while(rs.next()){
        byte[] bytes = rs.getBytes(1);
        RoaringBitmap bitmap32 = new RoaringBitmap();
        switch(bytes[0]) {
            case 0: // untuk bitmap kosong
                break;
            case 1: // untuk hanya satu elemen dalam bitmap32
                bitmap32.add(ByteBuffer.wrap(bytes,1,bytes.length-1)
                        .order(ByteOrder.LITTLE_ENDIAN)
                        .getInt());
                break;
            case 2: // untuk lebih dari satu elemen dalam bitmap32
                bitmap32.deserialize(ByteBuffer.wrap(bytes,1,bytes.length-1));
                break;
            // untuk detail lebih lanjut, lihat https://github.com/apache/doris/tree/master/samples/read_bitmap
        }
    }
}

block_encryption_mode

Mode enkripsi blok. Nilai default: NULL.

Nilai AES_128_ECB menentukan algoritma Standar Enkripsi Lanjutan (AES). Nilai SM3_128_ECB menentukan algoritma ShangMi 3 (SM3).

Nilai valid:

 AES_128_ECB, AES_192_ECB, AES_256_ECB, AES_128_CBC, AES_192_CBC, AES_256_CBC, AES_128_CFB, AES_192_CFB, AES_256_CFB, AES_128_CFB1, AES_192_CFB1, AES_256_CFB1, AES_128_CFB8, AES_192_CFB8, AES_256_CFB8, AES_128_CFB128, AES_192_CFB128, AES_256_CFB128, AES_128_CTR, AES_192_CTR, AES_256_CTR, AES_128_OFB, AES_192_OFB, AES_256_OFB, SM4_128_ECB, SM4_128_CBC, SM4_128_CFB128, SM4_128_OFB, SM4_128_CTR,

default_password_lifetime

Masa kedaluwarsa default kata sandi.

Nilai default: 0, yang menentukan bahwa kata sandi tidak pernah kedaluwarsa. Satuan: hari.

Variabel ini berlaku hanya jika kebijakan PASSWORD_EXPIRE pengguna diatur ke DEFAULT. Contoh:

CREATE USER user1 IDENTIFIED BY "12345" PASSWORD_EXPIRE DEFAULT;
ALTER USER user1 PASSWORD_EXPIRE DEFAULT;

password_history

Jumlah kata sandi historis default.

Nilai default: 0, yang menentukan tidak ada batasan.

Variabel ini berlaku hanya jika kebijakan PASSWORD_HISTORY pengguna diatur ke DEFAULT. Contoh:

CREATE USER user1 IDENTIFIED BY "12345" PASSWORD_HISTORY DEFAULT;
ALTER USER user1 PASSWORD_HISTORY DEFAULT;

validate_password_policy

Kebijakan validasi kekuatan kata sandi.

Nilai default: NONE atau 0, yang menentukan tidak ada validasi. Nilai valid: STRONG dan 2.

Jika Anda mengatur variabel ini ke STRONG atau 2, kata sandi yang Anda atur dengan mengeksekusi pernyataan ALTER USER atau SET PASSWORD harus memenuhi persyaratan berikut: Kata sandi harus minimal delapan karakter panjangnya. Kata sandi harus mengandung setidaknya tiga dari jenis karakter berikut: huruf besar, huruf kecil, angka, dan karakter khusus.

Karakter khusus termasuk: ~ ! @ # $ % ^ & * ( ) _ + | < > , . ? / : ; ' [ ] { } "

rewrite_or_to_in_predicate_threshold

Jumlah default operator OR untuk menulis ulang OR menjadi IN.

Nilai default: 2, yang menentukan bahwa dua operator OR dapat ditulis ulang sebagai predikat IN.

file_cache_base_path

Jalur penyimpanan cache file blok pada BE. Nilai default: acak, yang menentukan jalur penyimpanan konfigurasi BE dipilih secara acak.

topn_opt_limit_threshold

Ambang batas klausa Limit untuk fitur optimasi top N query. Nilai default: 1024.

Dalam contoh ini, pernyataan SELECT * FROM t ORDER BY k LIMIT n digunakan. Jika n dalam klausa Limit kurang dari atau sama dengan ambang batas ini, fitur optimasi top N query diaktifkan secara otomatis, seperti penyaringan dinamis dan pushdown, pengambilan hasil dua fase, dan pembacaan data dalam urutan kunci. Sebaliknya, fitur optimasi top N query dinonaktifkan.

use_fix_replica

Menentukan apakah akan menggunakan replika tetap untuk kueri. Nilai dimulai dari 0. Jika Anda mengatur variabel use_fix_replica menjadi 0, replika dengan nomor seri terkecil digunakan. Jika Anda mengatur variabel use_fix_replica menjadi 1, replika dengan nomor seri terkecil kedua digunakan.

Nilai default: -1, yang menentukan bahwa fitur ini dinonaktifkan.

Variabel Kompatibel atau Cadangan

Variabel ini tidak memiliki efek praktis.

Variabel

Deskripsi

SQL_AUTO_IS_NULL

Variabel ini digunakan untuk memastikan kompatibilitas dengan kolam koneksi JDBC c3p0. Ini tidak memiliki efek praktis.

auto_increment_increment

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis. Meskipun ApsaraDB for SelectDB mendukung kolom auto-increment, variabel ini tidak mempengaruhi perilaku kolom auto-increment. Hal ini juga berlaku untuk variabel auto_increment_offset.

autocommit

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

character_set_client

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

character_set_connection

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

character_set_results

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

character_set_server

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

collation_connection

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

collation_database

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

collation_server

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

have_query_cache

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

init_connect

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

interactive_timeout

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

language

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

max_allowed_packet

Variabel ini digunakan untuk memastikan kompatibilitas dengan kolam koneksi JDBC c3p0. Ini tidak memiliki efek praktis.

net_buffer_length

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

net_read_timeout

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

net_write_timeout

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

query_cache_size

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

query_cache_type

Variabel ini digunakan untuk memastikan kompatibilitas dengan kolam koneksi JDBC c3p0. Ini tidak memiliki efek praktis.

sql_safe_updates

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

tx_isolation

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

tx_read_only

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

transaction_read_only

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

transaction_isolation

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

version

Variabel ini digunakan untuk memastikan kompatibilitas dengan klien MySQL. Ini tidak memiliki efek praktis.

performance_schema

Variabel ini digunakan untuk memastikan kompatibilitas dengan MySQL JDBC 8.0.16 dan versi lebih baru. Ini tidak memiliki efek praktis.

codegen_level

Variabel ini digunakan untuk menetapkan level LLVM codegen. Tidak berlaku.

license

Variabel ini digunakan untuk menampilkan lisensi ApsaraDB for SelectDB. Tidak memiliki efek lain.

resource_group

Variabel ini dicadangkan.

system_time_zone

Variabel ini diatur ke zona waktu sistem saat kluster diinisialisasi. Variabel ini tidak dapat dimodifikasi.

version_comment

Variabel ini digunakan untuk menampilkan versi ApsaraDB for SelectDB. Variabel ini tidak dapat dimodifikasi.

dump_nereids_memo

Variabel ini digunakan untuk pengujian regresi.

group_concat_max_len

Variabel ini digunakan untuk memastikan kompatibilitas dengan beberapa alat business intelligence (BI). Ini tidak memiliki efek praktis.

be_number_for_test

Variabel ini tidak memiliki efek praktis.

workload_group

Variabel ini dicadangkan.

Pengaturan timeout

ApsaraDB for SelectDB memungkinkan Anda mengonfigurasi pengaturan timeout menggunakan variabel query_timeout dan insert_timeout, serta properti pengguna query_timeout dan insert_timeout.

Prioritas pengaturan timeout adalah sebagai berikut: Variabel Sesi > Properti Pengguna > Variabel Global > Nilai Default. Jika pengaturan dengan prioritas lebih tinggi tidak dikonfigurasi, pengaturan dengan prioritas lebih rendah secara otomatis berlaku.

query_timeout mengontrol periode timeout semua pernyataan. insert_timeout mengontrol periode timeout pernyataan INSERT. Saat mengeksekusi pernyataan INSERT, timeout yang lebih lama antara query_timeout dan insert_timeout digunakan.

Properti pengguna query_timeout dan insert_timeout hanya dapat dikonfigurasi oleh pengguna admin untuk pengguna tertentu. Properti ini digunakan untuk mengubah pengaturan timeout default pengguna yang ditentukan dan tidak memiliki semantik quota. Pengaturan timeout yang dikonfigurasi dalam properti pengguna berlaku setelah klien tersambung kembali.

Referensi