AnalyticDB for MySQL mendukung dua metode konfigurasi parameter:
-
SET ADB_CONFIG KEY=VALUE— menerapkan pengaturan di seluruh kluster (cakupan global). -
Hints (
/*+ KEY=VALUE*/) — hanya berlaku untuk satu pernyataan SQL.
Jika parameter yang sama dikonfigurasi dengan kedua metode tersebut, hint memiliki prioritas lebih tinggi.
Mulai dari versi kluster Milvus 3.2.5, sistem memvalidasi tipe konfigurasi.
Parameter konfigurasi umum
Untuk melihat dan memperbarui versi minor kluster Anda, buka bagian Configuration Information pada halaman Cluster Information di Konsol AnalyticDB for MySQL.
Jendela Peralihan
REPLICATION_SWITCH_TIME_RANGE
Menentukan jendela waktu alih bencana selama skala keluar kluster. Selama alih bencana, kluster lama melayani trafik read-only selama 5–10 menit. Konfigurasikan parameter ini pada kluster lama setelah terhubung ke kluster tersebut.
Jika jendela waktu tidak ditetapkan, kluster akan beralih secara otomatis setelah semua data inkremental dari kluster lama disinkronkan ke kluster baru.
Sintaksis:
SET ADB_CONFIG REPLICATION_SWITCH_TIME_RANGE=`23:00, 23:30`;
Lihat juga: Memperluas kapasitas kluster Edisi Data Warehouse
Batas kueri
MAX_IN_ITEMS_COUNT
Menetapkan jumlah maksimum nilai yang diperbolehkan dalam kondisi IN. Nilai harus berupa bilangan bulat positif.
| Versi kluster | Bawaan |
|---|---|
| 3.1.8 dan sebelumnya | 2000 |
| 3.1.9.x – 3.1.10.x | 4000 |
| 3.2.1 dan seterusnya | 20000 |
Sintaksis:
SET ADB_CONFIG MAX_IN_ITEMS_COUNT=4000;
Lihat juga: Penulisan dan kueri
MAX_SELECT_ITEMS_COUNT
Menetapkan jumlah maksimum kolom dalam pernyataan SELECT. Nilai bawaan: 1024. Peningkatan parameter ini dapat memengaruhi stabilitas kluster. Disarankan agar Anda tidak mengubahnya secara manual.
Sintaksis:
SET ADB_CONFIG MAX_SELECT_ITEMS_COUNT=1000;
Lihat juga: Penulisan dan kueri
QUERY_TIMEOUT
Menetapkan timeout untuk fase eksekusi kueri. Nilai bawaan: 1800000 ms (30 menit).
Parameter ini hanya mengontrol timeout eksekusi pernyataan SQL dan tidak memengaruhi timeout koneksi atau timeout sesi idle.
Sintaksis:
SET ADB_CONFIG QUERY_TIMEOUT=1000;
INSERT_SELECT_TIMEOUT
Menetapkan waktu eksekusi maksimum untuk pernyataan INSERT, UPDATE, dan DELETE di tingkat kluster.
-
Bawaan: 24×3600000 ms
-
Nilai harus berupa bilangan bulat positif. Satuan: milidetik (ms).
Sintaksis:
SET ADB_CONFIG INSERT_SELECT_TIMEOUT=3600000;
Lihat juga: Batas
Penurunan predikat
FILTER_NOT_PUSHDOWN_COLUMNS / NO_INDEX_COLUMNS
Menonaktifkan penurunan predikat untuk kolom tertentu di tingkat kluster. Nama parameter tergantung pada versi kluster Anda:
| Versi kluster | Parameter |
|---|---|
| 3.1.4 dan seterusnya | FILTER_NOT_PUSHDOWN_COLUMNS |
| Sebelum 3.1.4 | NO_INDEX_COLUMNS |
Sintaksis:
-- Versi kluster 3.1.4 dan seterusnya
SET ADB_CONFIG FILTER_NOT_PUSHDOWN_COLUMNS=[Schema1.tableName1:colName1|colName2;Schema2.tableName2:colName1|colName2];
-- Sebelum 3.1.4
SET ADB_CONFIG NO_INDEX_COLUMNS=[tableName1.colName1;colName2,tableName2.colName1];
Lihat juga: Kondisi filter tanpa pushdown
Mode eksekusi kueri
QUERY_TYPE
Mengalihkan mode eksekusi kueri untuk kluster.
-
Nilai yang valid:
interactive,batch
Parameter ini tidak tersedia untuk kluster Edisi Data Warehouse dalam mode reserved, atau untuk kluster Edisi Perusahaan, Edisi Dasar, dan Edisi Data Lakehouse.
Sintaksis:
SET ADB_CONFIG QUERY_TYPE=interactive;
Lihat juga: Mode eksekusi kueri
Konkurensi antrian kueri
Parameter-parameter ini mengontrol konkurensi maksimum dan kedalaman antrian untuk setiap tingkat prioritas per node frontend.
| Parameter | Antrian | Bawaan | Deskripsi |
|---|---|---|---|
XIHE_ENV_QUERY_ETL_MAX_CONCURRENT_SIZE |
LOWEST | 20 | Jumlah maksimum kueri konkuren |
XIHE_ENV_QUERY_ETL_MAX_QUEUED_SIZE |
LOWEST | 200 | Jumlah maksimum kueri dalam antrian |
XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE |
LOW | 20 | Jumlah maksimum kueri konkuren |
XIHE_ENV_QUERY_LOW_PRIORITY_MAX_QUEUED_SIZE |
LOW | 200 | Jumlah maksimum kueri dalam antrian |
XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE |
NORMAL | 20 | Jumlah maksimum kueri konkuren. Jika batas terlampaui, kueri baru akan masuk antrian. Jika antrian juga penuh, sistem akan mengembalikan error "Too many queued queries". Anda dapat meningkatkan nilai ini atau membuat kelompok resource kustom untuk mendistribusikan beban. |
XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE |
NORMAL | 200 | Jumlah maksimum kueri dalam antrian |
XIHE_ENV_QUERY_HIGH_MAX_CONCURRENT_SIZE |
HIGH | 40 | Jumlah maksimum kueri konkuren |
XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE |
HIGH | 400 | Jumlah maksimum kueri dalam antrian |
Sintaksis:
SET ADB_CONFIG XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE=20;
SET ADB_CONFIG XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE=200;
Lihat juga: Antrian prioritas dan konkurensi kelompok resource interaktif
Pengaturan pekerjaan BSP XIHE
Pekerjaan BSP (Bulk Synchronous Parallel) dijalankan di mesin XIHE. Parameter berikut mengontrol prioritas, batas sumber daya, dan timeout-nya.
QUERY_PRIORITY
Menetapkan prioritas penjadwalan untuk pekerjaan BSP.
-
Nilai yang valid:
HIGH,NORMAL,LOW,LOWEST -
Bawaan:
NORMAL
Sintaksis:
SET ADB_CONFIG QUERY_PRIORITY=HIGH;
Lihat juga: Daftar item konfigurasi
ELASTIC_JOB_MAX_ACU
Menetapkan jumlah maksimum ACU (AnalyticDB Compute Units) yang dapat digunakan oleh satu pekerjaan BSP.
-
Bawaan: 9
-
Minimum: 3
-
Rentang valid: [3, jumlah maksimum ACU dari kelompok resource bertipe Job]
Sintaksis:
SET ADB_CONFIG ELASTIC_JOB_MAX_ACU=20;
BATCH_QUERY_TIMEOUT
Menetapkan timeout untuk pekerjaan BSP. Nilai harus berupa bilangan bulat positif. Satuan: milidetik (ms).
-
Bawaan: 7200000 ms
Sintaksis:
SET ADB_CONFIG BATCH_QUERY_TIMEOUT=3600000;
Impor tabel eksternal
HIVE_SPLIT_ASYNC_GENERATION_ENABLED
Mengontrol apakah Hive mengirimkan tugas split ke antrian secara asinkron saat menghasilkan rencana eksekusi.
-
Nilai yang valid:
true,false -
Bawaan:
false
Memerlukan versi kluster 3.1.10.1 atau lebih baru.
Sintaksis:
SET ADB_CONFIG HIVE_SPLIT_ASYNC_GENERATION_ENABLED=true;
SQL_OUTPUT_BATCH_SIZE
Menetapkan jumlah baris per batch saat mengimpor data dari tabel eksternal MaxCompute. Nilai harus berupa bilangan bulat positif.
Sintaksis:
SET ADB_CONFIG SQL_OUTPUT_BATCH_SIZE=6000;
Lihat juga: Impor dan ekspor
ENABLE_ODPS_MULTI_PARTITION_PART_MATCH
Mengontrol apakah sistem melakukan pra-traversal partisi MaxCompute untuk mendapatkan jumlah catatan tiap partisi sebelum eksekusi kueri.
-
Nilai yang valid:
true,false
Sintaksis:
SET ADB_CONFIG ENABLE_ODPS_MULTI_PARTITION_PART_MATCH=false;
ASYNC_GET_SPLIT
Mengontrol apakah MaxCompute mengirimkan tugas pemuatan split ke antrian secara asinkron saat menghasilkan rencana eksekusi.
-
Nilai yang valid:
true,false -
Bawaan:
false
Memerlukan versi kluster 3.1.10.1 atau lebih baru.
Sintaksis:
SET ADB_CONFIG ASYNC_GET_SPLIT=true;
Penjadwalan pekerjaan BUILD
RC_CSTORE_BUILD_SCHEDULE_PERIOD
Membatasi rentang waktu penjadwalan tugas BUILD (bukan eksekusi). Nilai harus berupa bilangan bulat antara 0 dan 24.
Sintaksis:
SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`6,8`;
Lihat juga: Mengonfigurasi waktu penjadwalan BUILD otomatis
RC_BUILD_TASK_PRIORITY_LIST
Menetapkan prioritas penjadwalan untuk pekerjaan BUILD pada satu atau beberapa tabel. Prioritas tetap berlaku hingga Anda menetapkan yang baru.
-
Prioritas dikontrol oleh parameter
task_priority. Nilai harus berupa bilangan bulat. -
Bawaan: 0
Sintaksis:
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST=`<db1_name>.<table1_name>.<task_priority>;<db2_name>.<table2_name>.<task_priority>`;
Lihat juga: BUILD
Impor elastis
RC_ELASTIC_JOB_SCHEDULER_ENABLE
Mengaktifkan fitur impor elastis secara manual.
Sintaksis:
SET ADB_CONFIG RC_ELASTIC_JOB_SCHEDULER_ENABLE=true;
Lihat juga:
Fungsi REMOTE_CALL
Gunakan parameter-parameter ini saat memanggil user-defined function (UDF) di Function Compute melalui fungsi REMOTE_CALL. Semua lima parameter diatur di tingkat kluster.
| Parameter | Deskripsi | Contoh |
|---|---|---|
XIHE_REMOTE_CALL_SERVER_ENDPOINT |
Titik akhir layanan internal layanan Function Compute. Lihat Titik akhir layanan. | SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_ENDPOINT="1234567890000****.cn-zhangjiakou-internal.fc.aliyuncs.com" |
XIHE_REMOTE_CALL_SERVER_AK |
ID AccessKey dari Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) yang memiliki layanan Function Compute. | SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_AK=************; |
XIHE_REMOTE_CALL_SERVER_SK |
Secret AccessKey dari Akun Alibaba Cloud atau Pengguna RAM yang memiliki layanan Function Compute. | SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_SK=************; |
XIHE_REMOTE_CALL_COMPRESS_ENABLED |
Apakah data dikompresi dalam format GZIP sebelum dikirim ke Function Compute. | SET ADB_CONFIG REMOTE_CALL_COMPRESS_ENABLED=true; |
XIHE_REMOTE_CALL_MAX_BATCH_SIZE |
Jumlah baris data yang dikirim ke Function Compute per batch. Bawaan: 500000. | SET ADB_CONFIG XIHE_REMOTE_CALL_MAX_BATCH_SIZE=500000; |
Lihat juga: User-defined function (UDF)
Kontrol konkurensi pemindaian
Parameter-parameter ini mengontrol jumlah maksimum tugas pemindaian yang dapat dijalankan secara konkuren untuk mencegah ketidakstabilan node akibat konsumsi sumber daya berlebihan.
SPLIT_FLOW_CONTROL_ENABLED
Mengaktifkan atau menonaktifkan kontrol konkurensi pemindaian di tingkat kluster.
-
Nilai yang valid:
true,false -
Bawaan:
true
Sintaksis:
SET ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED=true;
Lihat juga: Kontrol konkurensi pemindaian
NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED
Mengaktifkan penyesuaian dinamis konkurensi pemindaian per tugas berdasarkan kuota konkurensi pemindaian keseluruhan node.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
SET ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED=true;
Kuota konkurensi pemindaian
| Parameter | Deskripsi | Bawaan |
|---|---|---|
MIN_RUNNING_SPLITS_LIMIT_PER_TASK |
Konkurensi pemindaian minimum per tugas. Rentang valid: [1, TARGET_RUNNING_SPLITS_LIMIT_PER_TASK]. |
1 |
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK |
Konkurensi pemindaian menengah per tugas. Kuota menyesuaikan naik atau turun relatif terhadap nilai ini. Rentang valid: [MIN_RUNNING_SPLITS_LIMIT_PER_TASK, MAX_RUNNING_SPLITS_LIMIT_PER_TASK]. |
32 |
MAX_RUNNING_SPLITS_LIMIT_PER_TASK |
Konkurensi pemindaian maksimum per tugas. Harus lebih besar dari TARGET_RUNNING_SPLITS_LIMIT_PER_TASK. |
64 |
WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE |
Kuota konkurensi pemindaian untuk node penyimpanan. Jangan ubah nilai bawaan — nilai yang salah akan menurunkan performa kluster. | 256 |
EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE |
Kuota konkurensi pemindaian untuk node komputasi. Jangan ubah nilai bawaan — nilai yang salah akan menurunkan performa kluster. | 256 |
Sintaksis:
SET ADB_CONFIG MIN_RUNNING_SPLITS_LIMIT_PER_TASK=24;
SET ADB_CONFIG TARGET_RUNNING_SPLITS_LIMIT_PER_TASK=32;
SET ADB_CONFIG MAX_RUNNING_SPLITS_LIMIT_PER_TASK=128;
Tampilan logis
VIEW_OUTPUT_NAME_CASE_SENSITIVE
Mengontrol apakah pencocokan nama kolom untuk tampilan logis bersifat case-sensitive.
-
Nilai yang valid:
true(case-sensitive),false(case-insensitive) -
Bawaan:
false
Sintaksis:
SET ADB_CONFIG VIEW_OUTPUT_NAME_CASE_SENSITIVE=true;
Lihat juga: CREATE VIEW
Pernyataan Multi
ALLOW_MULTI_QUERIES
Mengaktifkan eksekusi beberapa pernyataan SQL dalam satu permintaan menggunakan fitur Multi-Statement. Fitur ini harus diaktifkan secara manual sebelum digunakan.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
SET ADB_CONFIG ALLOW_MULTI_QUERIES=true;
Lihat juga: Multi-Statement
Binary logging
BINLOG_ENABLE
Mengaktifkan binary logging di tingkat kluster.
-
Untuk kluster yang menjalankan versi sebelum 3.2.0.0: aktifkan parameter ini secara manual sebelum mengaktifkan binary logging untuk tabel individual.
-
Untuk kluster yang menjalankan versi 3.2.0.0 atau lebih baru: binary logging diaktifkan secara bawaan. Parameter ini tidak diperlukan.
Sintaksis:
SET ADB_CONFIG BINLOG_ENABLE=true;
Lihat juga: Memperbarui Tampilan yang di-materialisasi
Cache paging
Cache paging mengoptimalkan performa untuk kueri paging mendalam dengan menyimpan cache hasil antara.
| Parameter | Deskripsi | Bawaan |
|---|---|---|
PAGING_CACHE_SCHEMA |
Database yang menyimpan tabel cache sementara. Jika tidak diatur, database yang sedang terhubung akan digunakan. | — |
PAGING_CACHE_MAX_TABLE_COUNT |
Jumlah maksimum tabel cache sementara. Pembuatan cache baru gagal jika batas ini tercapai. Harus berupa bilangan bulat positif. | 100 |
PAGING_CACHE_EXPIRATION_TIME |
TTL cache (time-to-live) dalam detik. Sistem membersihkan cache yang tidak diakses dalam periode ini. Harus berupa bilangan bulat positif. | 600 |
PAGING_CACHE_ENABLE |
Mengaktifkan atau menonaktifkan fitur cache paging secara global. | true |
Sintaksis:
SET ADB_CONFIG PAGING_CACHE_SCHEMA=paging_cache;
SET ADB_CONFIG PAGING_CACHE_MAX_TABLE_COUNT=100;
SET ADB_CONFIG PAGING_CACHE_EXPIRATION_TIME=600;
SET ADB_CONFIG PAGING_CACHE_ENABLE=false;
Lihat juga: Cache paging
Mesin tabel
RC_DDL_ENGINE_REWRITE_XUANWUV2
Menetapkan mesin tabel bawaan untuk tabel yang baru dibuat di tingkat kluster.
| Nilai | Perilaku |
|---|---|
true (bawaan) |
Tabel baru menggunakan XUANWU_V2. Jika Anda secara eksplisit menentukan ENGINE=XUANWU, maka akan ditulis ulang secara otomatis menjadi XUANWU_V2. Tabel yang sudah ada tidak terpengaruh. |
false |
Tabel baru menggunakan XUANWU. Tabel yang sudah ada tidak terpengaruh. |
Sintaksis:
SET ADB_CONFIG RC_DDL_ENGINE_REWRITE_XUANWUV2=true;
See also: Tentukan mesin tabel
Hint umum
Hint hanya berlaku untuk pernyataan SQL tempat hint tersebut muncul dan tidak memengaruhi konfigurasi global. Gunakan sintaksis /*+ KEY=VALUE*/ tepat sebelum pernyataan.
Batas kueri
QUERY_TIMEOUT
Menetapkan timeout kueri untuk satu kueri. Nilai harus berupa bilangan bulat positif. Satuan: milidetik (ms).
Sintaksis:
/*+ QUERY_TIMEOUT=1000 */ SELECT COUNT(*) FROM t;
Lihat juga: Penulisan dan kueri
INSERT_SELECT_TIMEOUT
Menetapkan waktu eksekusi maksimum untuk pernyataan INSERT, UPDATE, dan DELETE untuk satu kueri.
-
Bawaan: 24×3600000 ms
-
Nilai harus berupa bilangan bulat positif. Satuan: milidetik (ms).
Sintaksis:
/*+ INSERT_SELECT_TIMEOUT=3600000 */ UPDATE customer SET customer_name='adb' WHERE customer_id='2369';
Lihat juga: Batas
MAX_SELECT_ITEMS_COUNT
Menetapkan jumlah maksimum kolom yang diperbolehkan dalam klausa SELECT.
-
Bawaan: 1024
-
Nilai harus berupa bilangan bulat positif.
Sintaksis:
/*+ MAX_SELECT_ITEMS_COUNT=2048*/
MAX_IN_ITEMS_COUNT
Menetapkan jumlah maksimum nilai yang diperbolehkan dalam kondisi IN untuk satu kueri.
-
Bawaan: 4000
-
Nilai harus berupa bilangan bulat positif.
Sintaksis:
/*+ MAX_IN_ITEMS_COUNT=1000*/
MAX_WHERE_ITEMS_COUNT
Menetapkan jumlah maksimum kondisi yang diperbolehkan dalam klausa WHERE.
-
Bawaan: 256
-
Nilai harus berupa bilangan bulat positif.
Sintaksis:
/*+ MAX_WHERE_ITEMS_COUNT=512*/
QUERY_MAX_SHUFFLE_DATA_SIZE_MB
Menetapkan volume data shuffle maksimum untuk suatu kueri. Jika kueri melebihi ambang batas ini, sistem akan menghentikannya dengan error. Secara bawaan, tidak ada batasan. Nilai harus berupa bilangan bulat positif. Satuan: MB.
Sintaksis:
/*+ QUERY_MAX_SHUFFLE_DATA_SIZE_MB=1024*/
Penurunan predikat
FILTER_NOT_PUSHDOWN_COLUMNS / NO_INDEX_COLUMNS
Menonaktifkan penurunan predikat untuk kolom tertentu di tingkat kueri. Nama parameter tergantung pada versi kluster Anda:
| Versi kluster | Parameter |
|---|---|
| 3.1.4 dan seterusnya | FILTER_NOT_PUSHDOWN_COLUMNS |
| Sebelum 3.1.4 | NO_INDEX_COLUMNS |
Sintaksis:
-- Versi kluster 3.1.4 dan seterusnya
/*+ FILTER_NOT_PUSHDOWN_COLUMNS=[Schema1.table1:colName1|colName2;Schema2.table2:colName1|colName2] */
-- Sebelum 3.1.4
/*+ NO_INDEX_COLUMNS=[tableName1.colName1;colName2,tableName2.colName1] */
Lihat juga: Kondisi filter tanpa pushdown
Penjadwalan pekerjaan BUILD
BUILD_TASK_PRIORITY
Menetapkan prioritas penjadwalan untuk tugas BUILD pada satu tabel. Nilai yang lebih tinggi berarti prioritas lebih tinggi.
-
Bawaan: 0
-
Nilai harus berupa bilangan bulat ≥ 0.
Hint ini hanya dapat menetapkan prioritas untuk satu tabel dalam satu waktu. Untuk menetapkan prioritas untuk beberapa tabel, gunakan parameter konfigurasi RC_BUILD_TASK_PRIORITY_LIST sebagai gantinya.
Sintaksis:
/*+ BUILD_TASK_PRIORITY=2 */ BUILD TABLE db.table;
Lihat juga: Mengonfigurasi prioritas penjadwalan BUILD
Impor elastis
ELASTIC_LOAD dan ELASTIC_LOAD_CONFIGS
Mengaktifkan impor elastis dan menentukan kelompok resource Job untuk menjalankan tugas impor.
Sintaksis:
/*+ ELASTIC_LOAD=true, ELASTIC_LOAD_CONFIGS=[adb.load.resource.group.name=resource_group]*/
SUBMIT JOB INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
Lihat juga:
Penyesuaian rencana eksekusi
O_CBO_RULE_SWAP_OUTER_JOIN / LEFT_TO_RIGHT_ENABLED
Memerintahkan pengoptimal untuk mengubah Left Join menjadi Right Join ketika tabel kanan berukuran besar, sehingga mengurangi konsumsi memori. Nama parameter tergantung pada versi kluster Anda:
| Versi kluster | Parameter |
|---|---|
| 3.1.8 dan seterusnya | O_CBO_RULE_SWAP_OUTER_JOIN |
| Sebelum 3.1.8 | LEFT_TO_RIGHT_ENABLED |
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ O_CBO_RULE_SWAP_OUTER_JOIN=true*/
/*+ LEFT_TO_RIGHT_ENABLED=true*/
Lihat juga: Mengubah LEFT JOIN menjadi RIGHT JOIN
REORDER_JOINS
Mengontrol penyesuaian urutan join secara otomatis. Saat dinonaktifkan, kueri dieksekusi sesuai urutan join yang ditulis dalam pernyataan SQL.
-
Nilai yang valid:
true,false -
Bawaan:
true
Sintaksis:
/*+ REORDER_JOINS=false*/
Lihat juga: Menyesuaikan urutan join secara manual
AGGREGATION_PATH_TYPE
Mengontrol apakah pengoptimal melewati agregasi parsial dan langsung menuju agregasi final. Berguna ketika jumlah grup dalam kueri groupby sangat besar dan agregasi parsial mengonsumsi sumber daya berlebihan.
-
Nilai yang valid:
single_agg(lewati agregasi parsial),auto(pengoptimal yang menentukan) -
Bawaan:
auto
Sintaksis:
/*+ AGGREGATION_PATH_TYPE=single_agg*/
Lihat juga: Optimasi kueri pengelompokan dan agregasi
Kebijakan runtime
HASH_PARTITION_COUNT
Menetapkan jumlah tugas konkuren untuk operasi komputasi. Nilai harus berupa bilangan bulat positif.
-
Bawaan: 32
Sintaksis:
/*+ HASH_PARTITION_COUNT=32*/
TASK_WRITER_COUNT
Menetapkan konkurensi penulisan untuk tugas impor INSERT INTO SELECT. Kurangi nilai ini jika beban worker terlalu tinggi. Nilai harus berupa bilangan bulat positif.
-
Bawaan: 16
Sintaksis:
/*+ TASK_WRITER_COUNT=8*/
CTE_EXECUTION_MODE
Mengontrol apakah subkueri Common Table Expression (CTE) yang direferensikan beberapa kali dieksekusi hanya sekali (mode bersama) atau setiap kali direferensikan (mode inline).
-
Nilai yang valid:
shared(eksekusi sekali),inline(eksekusi setiap kali) -
Bawaan:
inline
Sintaksis:
/*+ CTE_EXECUTION_MODE=shared*/
Lihat juga: WITH
Pengaturan pekerjaan BSP XIHE
QUERY_PRIORITY
Menetapkan prioritas penjadwalan untuk pekerjaan BSP di tingkat kueri.
-
Nilai yang valid:
HIGH,NORMAL,LOW,LOWEST -
Bawaan:
NORMAL
Sintaksis:
/*+ QUERY_PRIORITY=HIGH*/
Lihat juga: Daftar item konfigurasi
ELASTIC_JOB_MAX_ACU
Menetapkan jumlah maksimum ACU yang dapat digunakan oleh satu pekerjaan BSP di tingkat kueri.
-
Bawaan: 9
-
Minimum: 3
-
Rentang valid: [3, jumlah maksimum ACU dari kelompok resource bertipe Job]
Sintaksis:
/*+ ELASTIC_JOB_MAX_ACU=20*/
BATCH_QUERY_TIMEOUT
Menetapkan timeout untuk pekerjaan BSP di tingkat kueri. Nilai harus berupa bilangan bulat positif. Satuan: milidetik (ms).
-
Bawaan: 7200000 ms
Sintaksis:
/*+ BATCH_QUERY_TIMEOUT=3600000*/
Tabel eksternal OSS
OUTPUT_FILENAME
Menyesuaikan nama file saat mengekspor data ke tabel eksternal OSS. Tambahkan hint ini sebelum pernyataan ekspor.
Sintaksis:
/*+ OUTPUT_FILENAME=output.csv*/
Lihat juga: Ekspor ke OSS
SQL_OUTPUT_OSS_FILE_HEAD_ENABLE
Mengontrol apakah file yang diekspor ke OSS menyertakan nama kolom. Secara bawaan, file yang diekspor hanya berisi data.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ SQL_OUTPUT_OSS_FILE_HEAD_ENABLE=true*/
HIVE_SPLIT_ASYNC_GENERATION_ENABLED
Mengontrol apakah Hive mengirimkan tugas split secara asinkron saat menghasilkan rencana eksekusi.
-
Nilai yang valid:
true,false -
Bawaan:
false
Memerlukan versi kluster 3.1.10.1 atau lebih baru.
Sintaksis:
/*+ HIVE_SPLIT_ASYNC_GENERATION_ENABLED=true*/
Lihat juga: Mengimpor data OSS menggunakan tabel eksternal
FAST_PARQUET_READER_ENABLE
Kembali ke pembaca Parquet native ketika statistik dalam file Parquet tidak benar.
-
Nilai yang valid:
true,false -
Bawaan:
true
Sintaksis:
/*+ FAST_PARQUET_READER_ENABLE=true*/
OSS_VECTORIZED_PARQUET_READER_ENABLE
Mengaktifkan pembacaan Parquet vektorisasi untuk data yang tidak mengandung nilai NULL.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ OSS_VECTORIZED_PARQUET_READER_ENABLE=true*/
OSS_VECTORIZED_PARQUET_READER_NULL_SCENE_ENABLE
Mengaktifkan pembacaan Parquet vektorisasi untuk data yang mengandung nilai NULL.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ OSS_VECTORIZED_PARQUET_READER_NULL_SCENE_ENABLE=true*/
Tabel eksternal Hudi
HUDI_METADATA_TABLE_ENABLED
Mengontrol apakah metadata Hudi dimuat saat mengkueri tabel Hudi.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ HUDI_METADATA_TABLE_ENABLED=true*/
HUDI_QUERY_TYPE
Menetapkan metode kueri untuk tabel Hudi.
| Nilai | Deskripsi |
|---|---|
read_optimized (bawaan) |
Mengembalikan data dari kompaksi atau commit terbaru. |
snapshot |
Mengembalikan semua data yang telah di-commit atau dikompaksi hingga titik waktu tertentu. |
Sintaksis:
/*+ HUDI_QUERY_TYPE=snapshot*/
HUDI_REALTIME_SKIP_MERGE
Dalam mode kueri snapshot, mengontrol apakah penggabungan record dari file dasar dan file log dilewati.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ HUDI_REALTIME_SKIP_MERGE=true*/
Pengaturan split dan performa Hudi
| Parameter | Deskripsi | Bawaan |
|---|---|---|
HUDI_MAX_SPLIT_SIZE |
Ukuran split maksimum. Satuan: MB. | 128 |
HUDI_SPLIT_PARALLEL_GENERATION_ENABLED |
Apakah split dihasilkan secara paralel. | true |
HUDI_DATA_SKIPPING_ENABLED |
Menggunakan statistik Hudi MetaTable untuk melewati shard yang tidak diperlukan selama pembacaan, sehingga meningkatkan performa kueri. | false |
HUDI_SPLIT_ASYNC_GENERATION_ENABLED |
Apakah split Hudi dihasilkan secara asinkron selama pembuatan rencana eksekusi. | true |
Sintaksis:
/*+ HUDI_MAX_SPLIT_SIZE=128*/
/*+ HUDI_SPLIT_PARALLEL_GENERATION_ENABLED=true*/
/*+ HUDI_DATA_SKIPPING_ENABLED=true*/
/*+ HUDI_SPLIT_ASYNC_GENERATION_ENABLED=true*/
Tabel eksternal ApsaraDB RDS for MySQL
JDBC_SCAN_SPLITS
Menetapkan jumlah split selama pemindaian tabel berbasis Java Database Connectivity (JDBC).
-
Bawaan: 1
-
Rentang valid: 1–100
Sintaksis:
/*+ JDBC_SCAN_SPLITS=1*/
Lihat juga: Menggunakan tabel eksternal untuk mengimpor data dari RDS for MySQL
JDBC_SPLIT_COLUMN
Menentukan kolom yang digunakan untuk membagi data saat membaca tabel eksternal ApsaraDB RDS for MySQL.
Sintaksis:
/*+ JDBC_SPLIT_COLUMN=column1*/
JDBC_INSERT_DIRECTLY
Menulis data langsung ke tabel target alih-alih menampungnya terlebih dahulu di tabel sementara. Penulisan langsung lebih cepat tetapi dapat meninggalkan data kotor di tabel target jika terjadi error.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ JDBC_INSERT_DIRECTLY=true*/
Tabel eksternal Tablestore
OTS-INSERT-AS-UPDATE
Menggunakan pernyataan INSERT alih-alih pernyataan UPDATE saat menulis ke tabel eksternal Tablestore.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ OTS-INSERT-AS-UPDATE=true*/
Lihat juga: Mengkueri dan mengimpor data Tablestore
Tabel eksternal MaxCompute
ODPS_SPLIT_LIMIT
Menetapkan jumlah maksimum split saat membaca data MaxCompute melalui Tunnel.
-
Bawaan: 1000
-
Rentang valid: 1–1000
Sintaksis:
/*+ ODPS_SPLIT_LIMIT=1000*/
Lihat juga: Mengimpor data MaxCompute menggunakan tabel eksternal
IGNORE_PARTITION_CACHE
Mengkueri metadata partisi langsung dari tabel MaxCompute alih-alih menggunakan metadata cache. Berguna ketika data partisi telah berubah sejak cache diisi.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ IGNORE_PARTITION_CACHE=true*/
ROWS_PER_SPLIT
Menetapkan jumlah maksimum baris yang dapat dibaca oleh satu split melalui Tunnel.
-
Bawaan: 500000
-
Rentang valid: 10000–500000
Sintaksis:
/*+ ROWS_PER_SPLIT=500000*/
STORAGE_API_ENABLED
Menggunakan MaxCompute Storage API alih-alih Tunnel untuk membaca data MaxCompute. Storage API secara signifikan meningkatkan performa baca.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*+ STORAGE_API_ENABLED=true*/
Pengaturan split MaxCompute Storage API
Semua parameter di bawah ini berlaku saat membaca data melalui MaxCompute Storage API.
| Parameter | Deskripsi | Bawaan |
|---|---|---|
APLIT_BYTE_SIZE |
Ukuran maksimum satu split. Satuan: MB. | 256 |
MAX_BATCH_ROW_COUNT |
Jumlah maksimum baris dalam satu split. | 1024 |
PAGE_BATCH_SIZE |
Jumlah maksimum baris per halaman. | 1024 |
MAX_ALLOCATION_PER_SPLIT |
Memori puncak maksimum yang dialokasikan di tingkat split. Satuan: MB. | 300 |
ASYNC_GET_SPLIT |
Apakah tugas pemuatan split dikirimkan secara asinkron. Memerlukan versi kluster 3.1.10.1 atau lebih baru. | false |
Sintaksis:
/*+ APLIT_BYTE_SIZE=256*/
/*+ MAX_BATCH_ROW_COUNT=1024*/
/*+ PAGE_BATCH_SIZE=1024*/
/*+ MAX_ALLOCATION_PER_SPLIT=300*/
/*+ ASYNC_GET_SPLIT=true*/
Kontrol konkurensi pemindaian
SPLIT_FLOW_CONTROL_ENABLED
Mengaktifkan atau menonaktifkan kontrol konkurensi pemindaian di tingkat kueri.
-
Nilai yang valid:
true(aktifkan),false(nonaktifkan) -
Bawaan:
true
Sintaksis:
/*+ SPLIT_FLOW_CONTROL_ENABLED=true*/ SELECT * FROM table;
Lihat juga: Kontrol konkurensi pemindaian
Kuota konkurensi pemindaian (tingkat kueri)
| Parameter | Deskripsi | Bawaan | Contoh |
|---|---|---|---|
MIN_RUNNING_SPLITS_LIMIT_PER_TASK |
Konkurensi pemindaian minimum per tugas. Rentang valid: [1, TARGET_RUNNING_SPLITS_LIMIT_PER_TASK]. |
1 | /*+ MIN_RUNNING_SPLITS_LIMIT_PER_TASK=10*/ SELECT * FROM orders; |
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK |
Konkurensi pemindaian menengah per tugas. Rentang valid: [MIN_RUNNING_SPLITS_LIMIT_PER_TASK, MAX_RUNNING_SPLITS_LIMIT_PER_TASK]. |
32 | /*+ TARGET_RUNNING_SPLITS_LIMIT_PER_TASK=32*/ SELECT * FROM adb_test; |
MAX_RUNNING_SPLITS_LIMIT_PER_TASK |
Konkurensi pemindaian maksimum per tugas. Harus lebih besar dari TARGET_RUNNING_SPLITS_LIMIT_PER_TASK. |
64 | /*+ MAX_RUNNING_SPLITS_LIMIT_PER_TASK=100*/ SELECT * FROM adb_test; |
Cache Paging
PAGING_ID
Mengaktifkan cache paging dan secara manual menentukan paging_id untuk mengelompokkan kueri paging terkait (kueri dengan pola yang sama yang hanya berbeda pada nilai LIMIT dan OFFSET).
Sintaksis:
/*PAGING_ID=paging123*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
Lihat juga: Cache paging
PAGING_CACHE_ENABLED
Mengaktifkan cache paging dan secara otomatis menghasilkan paging_id berdasarkan pola SQL.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*PAGING_CACHE_ENABLED=true*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
PAGING_CACHE_VALIDITY_INTERVAL
Menetapkan periode validitas cache dalam detik. Setelah periode ini, cache kedaluwarsa. Jika cache tidak diakses dalam satu jam setelah kedaluwarsa, sistem akan menghapus tabel sementara yang sesuai. Nilai harus berupa bilangan bulat positif. Gunakan bersama PAGING_CACHE_ENABLED.
Sintaksis:
/*PAGING_CACHE_ENABLED=true, PAGING_CACHE_VALIDITY_INTERVAL=300*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
INVALIDATE_PAGING_CACHE
Menghapus cache paging untuk pola kueri tertentu. Gunakan bersama PAGING_ID atau PAGING_CACHE_ENABLED.
-
Nilai yang valid:
true,false -
Bawaan:
false
Sintaksis:
/*PAGING_CACHE_ENABLED=true, INVALIDATE_PAGING_CACHE=true*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
Mesin tabel
RC_DDL_ENGINE_REWRITE_XUANWUV2
Menentukan mesin tabel untuk tabel yang dibuat oleh pernyataan SQL saat ini.
| Nilai | Perilaku |
|---|---|
true (bawaan) |
Tabel baru menggunakan XUANWU_V2. Jika Anda secara eksplisit menentukan ENGINE=XUANWU, maka akan ditulis ulang secara otomatis menjadi XUANWU_V2. Tabel yang sudah ada tidak terpengaruh. |
false |
Tabel baru menggunakan XUANWU. Tabel yang sudah ada tidak terpengaruh. |
Sintaksis:
/*+ RC_DDL_ENGINE_REWRITE_XUANWUV2=true */
Lihat juga: Menentukan mesin tabel
Hint lainnya
RESOURCE_GROUP
Menentukan kelompok resource untuk suatu kueri. Jika tidak diatur, kelompok resource yang terikat pada akun database akan digunakan. Jika akun tidak memiliki kelompok resource yang terikat, kelompok resource bawaan akan digunakan.
Sintaksis:
/*+ RESOURCE_GROUP=my_group_name*/
DML_EXCEPTION_TO_NULL_ENABLED
Mengontrol cara menangani nilai tidak valid dalam pernyataan INSERT SELECT.
-
Nilai yang valid:
true(menulis NULL alih-alih melemparkan error),false(melemparkan error) -
Bawaan:
false
Sintaksis:
/*+ DML_EXCEPTION_TO_NULL_ENABLED=true*/
DISPLAY_HINT
Memberi label pada kueri untuk identifikasi, seperti menandai kueri dari tim bisnis yang berbeda.
Sintaksis:
/*+ DISPLAY_HINT=from_user_123*/
FAQ
Bagaimana cara mengembalikan parameter konfigurasi ke nilai bawaannya?
Jalankan SET ADB_CONFIG REMOVE <key> untuk menghapus pengaturan dan mengembalikan nilai bawaan:
SET ADB_CONFIG REMOVE QUERY_TIMEOUT; -- Mengembalikan timeout kueri ke nilai bawaannya.
Untuk memastikan parameter telah dikembalikan, jalankan:
SHOW ADB_CONFIG KEY=<key>;