全部产品
Search
文档中心

ApsaraDB for SelectDB:Pembagian partisi dinamis

更新时间:Jul 30, 2025

Topik ini menjelaskan fitur pembagian partisi dinamis dari ApsaraDB for SelectDB serta memberikan contoh penggunaannya. Fitur ini membantu Anda mengelola partisi secara dinamis dan mengurangi biaya.

Ikhtisar

Dalam skenario tertentu, tabel dapat dibagi berdasarkan hari. Jika partisi dikelola secara manual, data mungkin gagal diimpor ke tabel pada hari-hari ketika partisi tidak dibuat, sehingga meningkatkan biaya pemeliharaan. Untuk mengatasi masalah ini, Anda dapat menggunakan fitur pembagian partisi dinamis untuk mengonfigurasi aturan pembagian partisi saat membuat tabel. ApsaraDB for SelectDB akan membuat atau menghapus partisi berdasarkan aturan yang telah dikonfigurasi. Anda juga dapat memodifikasi aturan tersebut saat runtime untuk mengelola partisi dengan lebih efisien.

Catatan

ApsaraDB for SelectDB memungkinkan Anda menggunakan fitur pembagian partisi dinamis untuk secara otomatis membuat atau menghapus partisi rentang.

Buat tabel dengan partisi dinamis

Aturan pembagian partisi dinamis dapat dikonfigurasi saat membuat atau memodifikasi tabel pada runtime. Aturan ini hanya berlaku untuk tabel yang dibagi menggunakan satu kolom kunci partisi tunggal. Contoh kode berikut menunjukkan cara mengonfigurasi aturan pembagian partisi dinamis saat pembuatan tabel:

CREATE TABLE tbl1
(...)
PROPERTIES
( 
	"dynamic_partition.prop1" = "value1",
 	"dynamic_partition.prop2" = "value2",
  ...
)

Item konfigurasi global

Berikut adalah item konfigurasi global yang terkait dengan pembagian partisi dinamis untuk instans ApsaraDB for SelectDB.

  • Menentukan apakah fitur pembagian partisi dinamis diaktifkan. Nilai default: true. Parameter ini hanya memengaruhi operasi pembagian partisi pada tabel dengan partisi dinamis dan tidak berdampak pada tabel standar.

    Anda dapat menjalankan perintah berikut saat runtime untuk menentukan parameter ini:

    ADMIN SET FRONTEND CONFIG ("dynamic_partition_enable" = "true")

    Untuk menonaktifkan fitur pembagian partisi dinamis secara global, atur parameter ini menjadi false.

  • Interval waktu thread pembagian partisi dinamis dijalankan. Satuan: detik. Nilai default: 600, yang berarti thread pembagian partisi dinamis dijalankan setiap 10 menit.

    Anda dapat menjalankan perintah berikut saat runtime untuk memodifikasi parameter ini:

    ADMIN SET FRONTEND CONFIG ("dynamic_partition_check_interval_seconds" = "7200")

Item konfigurasi tabel

Nama parameter untuk mengonfigurasi aturan pembagian partisi dinamis memiliki awalan dynamic_partition. Tabel berikut menjelaskan parameter terkait pembagian partisi dinamis.

Parameter

Nilai Default

Deskripsi

dynamic_partition.enable

true

Menentukan apakah akan mengaktifkan fitur pembagian partisi dinamis. Nilai valid:

  • true: mengaktifkan fitur pembagian partisi dinamis.

  • false: menonaktifkan fitur pembagian partisi dinamis dan mengabaikan aturan pembagian partisi dinamis.

dynamic_partition.time_unit

Tidak ada nilai default

Satuan waktu untuk penjadwalan partisi dinamis. Nilai valid:

  • HOUR: membuat atau menghapus partisi per jam. Akhiran nama partisi yang dibuat secara dinamis dalam format yyyyMMddHH. Contoh: 2020032501. Jika Anda mengatur parameter ini ke HOUR, kolom kunci partisi tidak boleh bertipe DATE.

  • DAY: membuat atau menghapus partisi per hari. Akhiran nama partisi yang dibuat secara dinamis dalam format yyyyMMdd. Contoh: 20200325.

  • WEEK: membuat atau menghapus partisi per minggu. Akhiran nama partisi yang dibuat secara dinamis dalam format yyyy_ww, yang menentukan minggu dalam tahun dimana tanggal tersebut termasuk. Sebagai contoh, akhiran nama partisi 2020_13 dari partisi yang dibuat pada 25 Maret 2020 menentukan minggu ketiga belas tahun 2020.

  • MONTH: membuat atau menghapus partisi per bulan. Akhiran nama partisi yang dibuat secara dinamis dalam format yyyyMM. Contoh: 202003.

dynamic_partition.time_zone

Asia/Shanghai

Zona waktu partisi yang dibuat secara dinamis.

dynamic_partition.start

-2147483648,

Offset awal partisi yang dibuat secara dinamis, yang merupakan angka negatif. Berdasarkan parameter time_unit dan hari, minggu, atau bulan saat ini, partisi dalam rentang waktu yang ditentukan sebelum offset ini dihapus. Jika Anda mengatur parameter ini ke -2147483648, partisi historis tidak dihapus.

dynamic_partition.end

Tidak ada nilai default

Offset akhir partisi yang dibuat secara dinamis, yang merupakan angka positif. Berdasarkan parameter time_unit dan hari, minggu, atau bulan saat ini, partisi dalam rentang waktu yang ditentukan dibuat terlebih dahulu.

dynamic_partition.prefix

Tidak ada nilai default

Awalan nama partisi yang dibuat secara dinamis.

dynamic_partition.create_history_partition

false

Menentukan apakah akan membuat partisi historis. Parameter ini tidak berpengaruh jika Anda membiarkan parameter dynamic_partition.start kosong. Jika parameter ini disetel ke true, partisi historis dibuat secara otomatis. Untuk informasi lebih lanjut, lihat bagian Aturan untuk membuat partisi historis dari topik ini. Selain itu, parameter max_dynamic_partition_num dari antarmuka depan menentukan jumlah maksimum partisi yang dapat dibuat untuk mencegah partisi berlebihan. Jika jumlah partisi yang ingin Anda buat lebih besar dari nilai parameter max_dynamic_partition_num, partisi berlebihan gagal dibuat.

dynamic_partition.history_partition_num

-1

Jumlah partisi historis yang ingin Anda buat. Parameter ini berlaku jika parameter create_history_partition disetel ke true. Jika Anda mengatur parameter ini ke -1, jumlah partisi historis yang ingin Anda buat tidak ditentukan.

dynamic_partition.reserved_history_periods

"NULL"

Rentang waktu partisi historis yang akan dipertahankan. Jika parameter dynamic_partition.time_unit disetel ke DAY, WEEK, atau MONTH, Anda harus menetapkan nilai parameter ini dalam format [yyyy-MM-dd,yyyy-MM-dd],[...,...]. Jika parameter dynamic_partition.time_unit disetel ke HOUR, Anda harus menetapkan nilai parameter ini dalam format [yyyy-MM-dd HH:mm:ss,yyyy-MM-dd HH:mm:ss],[...,...].

dynamic_partition.buckets

Tidak ada nilai default

Jumlah bucket dalam partisi yang dibuat secara dinamis.

dynamic_partition.start_day_of_week

1

Titik awal setiap minggu. Parameter ini berlaku jika parameter time_unit disetel ke WEEK. Nilai valid: 1 hingga 7. Nilai 1 menentukan Senin dan nilai 7 menentukan Minggu. Nilai default: 1, yang menentukan bahwa Senin adalah titik awal setiap minggu.

dynamic_partition.start_day_of_month

1

Titik awal setiap bulan. Parameter ini berlaku jika parameter time_unit disetel ke MONTH. Nilai valid: 1 hingga 28. Nilai 1 menentukan hari pertama setiap bulan dan nilai 28 menentukan hari kedua puluh delapan setiap bulan. Anda tidak dapat mengatur parameter ini ke 29, 30, atau 31. Hal ini mencegah ambiguitas yang disebabkan oleh tahun kabisat atau bulan kabisat. Nilai default: 1, yang menentukan bahwa hari pertama setiap bulan adalah titik awal setiap bulan.

Contoh Pengaturan Parameter dynamic_partition.reserved_history_periods

Sebagai contoh, tabel dibagi per hari.

  • Tentukan parameter pembagian partisi dinamis berikut: time_unit="DAY/WEEK/MONTH", end=3, start=-3, reserved_history_periods="[2020-06-01,2020-06-20],[2020-10-31,2020-11-15]".

    Sistem secara otomatis mempertahankan partisi historis dalam rentang waktu yang ditentukan.

    ["2020-06-01","2020-06-20"],["2020-10-31","2020-11-15"]
  • Tentukan parameter pembagian partisi dinamis berikut: time_unit="HOUR", end=3, start=-3, reserved_history_periods="[2020-06-01 00:00:00,2020-06-01 03:00:00]".

    Sistem secara otomatis mempertahankan partisi historis dalam rentang waktu yang ditentukan.

    ["2020-06-01 00:00:00","2020-06-01 03:00:00"]

    Dalam nilai parameter reserved_history_periods, setiap interval dalam format [...,...] terdiri dari waktu mulai dan waktu akhir. Keduanya harus ditentukan, dengan waktu mulai tidak boleh lebih lambat dari waktu akhir.

Aturan untuk membuat partisi historis

Jika Anda mengatur parameter create_history_partition ke true, ApsaraDB for SelectDB akan menentukan jumlah partisi historis yang dibuat berdasarkan nilai parameter dynamic_partition.start dan dynamic_partition.history_partition_num.

Sebagai contoh, gunakan parameter expect_create_partition_num untuk menentukan jumlah partisi historis yang akan dibuat. Hitung nilai parameter ini berdasarkan aturan berikut:

  • create_history_partition=true

    • Jika parameter dynamic_partition.history_partition_num diatur ke -1, hitung nilai parameter expect_create_partition_num menggunakan rumus berikut: expect_create_partition_num = end - start.

    • Jika parameter dynamic_partition.history_partition_num diatur ke nilai lain, hitung nilai parameter expect_create_partition_num menggunakan rumus berikut: expect_create_partition_num = end - Max(start,-history_partition_num).

  • create_history_partition=false: Dalam hal ini, tidak ada partisi historis yang dibuat. Hitung nilai parameter expect_create_partition_num menggunakan rumus berikut: expect_create_partition_num = end - 0.

Catatan

Jika nilai parameter expect_create_partition_num lebih besar daripada nilai parameter max_dynamic_partition_num, pembuatan partisi tambahan akan gagal. Nilai default untuk parameter max_dynamic_partition_num adalah 500.

Contoh partisi historis

  1. Sebagai contoh, tanggal saat ini adalah 2021-05-20. Tabel dibagi per hari dengan parameter pembagian partisi dinamis berikut: create_history_partition=true, end=3, start=-3, history_partition_num=1. Sistem secara otomatis membuat partisi berikut:

    p20210519
    p20210520
    p20210521
    p20210522
    p20210523
  2. Sebagai contoh, tanggal saat ini adalah 2021-05-20. Tabel dibagi per hari dengan parameter pembagian partisi dinamis berikut: create_history_partition=true, end=3, start=-3, history_partition_num=5. Sistem secara otomatis membuat partisi berikut:

    p20210517
    p20210518
    p20210519
    p20210520
    p20210521
    p20210522
    p20210523
  3. Sebagai contoh, tanggal saat ini adalah 2021-05-20. Tabel dibagi per hari dengan parameter pembagian partisi dinamis berikut: create_history_partition=true, end=3, start=-3, history_partition_num=-1. Sistem secara otomatis membuat partisi berikut:

    p20210517
    p20210518
    p20210519
    p20210520
    p20210521
    p20210522
    p20210523
    Penting

    Saat menggunakan fitur pembagian partisi dinamis, beberapa partisi dalam rentang waktu antara offset awal yang ditentukan oleh parameter dynamic_partition.start dan offset akhir yang ditentukan oleh parameter dynamic_partition.end mungkin hilang karena masalah tak terduga. Partisi yang hilang dalam rentang waktu antara tanggal saat ini dan offset akhir yang ditentukan oleh parameter dynamic_partition.end akan dibuat ulang, sedangkan partisi yang hilang dalam rentang waktu antara offset awal yang ditentukan oleh parameter dynamic_partition.start dan tanggal saat ini tidak dibuat ulang.

Contoh

  • Konfigurasikan aturan pembagian partisi dinamis untuk tabel tbl1 dengan kolom kunci partisi k1 bertipe DATE. Data dibagi per hari. Hanya partisi dalam tujuh hari sebelumnya yang dipertahankan, dan partisi untuk tiga hari ke depan dibuat terlebih dahulu.

    CREATE TABLE tbl1
    (
    	k1 DATE,
    	k2 int
    )
    PARTITION BY RANGE(k1) ()
    DISTRIBUTED BY HASH(k1)
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true",
    	"dynamic_partition.time_unit" = "DAY",
    	"dynamic_partition.start" = "-7",
    	"dynamic_partition.end" = "3",
    	"dynamic_partition.prefix" = "p",
    	"dynamic_partition.create_history_partition" = "true",
    	"dynamic_partition.buckets" = "32"
    );

    Sebagai contoh, jika tanggal saat ini adalah 2020-05-29, berdasarkan aturan di atas, partisi berikut dibuat untuk tabel tbl1:

    p20200529: ["2020-05-29", "2020-05-30")
    p20200530: ["2020-05-30", "2020-05-31")  
    p20200531: ["2020-05-31", "2020-06-01")  
    p20200601: ["2020-06-01", "2020-06-02")

    Pada hari berikutnya, yaitu 30 Mei 2020, partisi baru p20200602: ["2020-06-02", "2020-06-03") dibuat.

    Pada 06 Juni 2020, karena parameter dynamic_partition.start diatur ke -7, partisi yang dibuat tujuh hari sebelumnya dihapus. Dalam hal ini, partisi p20200529 dihapus.

  • Konfigurasikan aturan partisi dinamis untuk tabel tbl1 dengan kolom kunci partisi k1 bertipe DATETIME. Data dipartisi berdasarkan minggu. Hanya partisi dalam dua minggu sebelumnya yang dipertahankan, dan partisi untuk dua minggu ke depan dibuat terlebih dahulu.

    CREATE TABLE tbl1
    (
    	k1 DATETIME,
      ...
    )
    PARTITION BY RANGE(k1) ()
    DISTRIBUTED BY HASH(k1)
    PROPERTIES
    (	
    	"dynamic_partition.enable" = "true",
    	"dynamic_partition.time_unit" = "WEEK",
    	"dynamic_partition.start" = "-2",
    	"dynamic_partition.end" = "2",
    	"dynamic_partition.prefix" = "p",
    	"dynamic_partition.create_history_partition" = "true",
    	"dynamic_partition.buckets" = "8"
    );

    Sebagai contoh, tanggal saat ini adalah 2020-05-29, yang merupakan minggu ke-22 pada tahun 2020. Secara default, awal setiap minggu adalah hari Senin. Berdasarkan aturan sebelumnya, partisi-partisi berikut dibuat untuk tabel tbl1:

    p2020_22: ["2020-05-25 00:00:00", "2020-06-01 00:00:00")
    p2020_23: ["2020-06-01 00:00:00", "2020-06-08 00:00:00")
    p2020_24: ["2020-06-08 00:00:00", "2020-06-15 00:00:00")

    Setiap partisi dimulai pada hari Senin. Karena kolom k1 bertipe DATETIME, sistem melengkapi jam, menit, dan detik pada nilai kunci partisi dengan 00:00:00.

    Pada 15 Juni 2020, yang merupakan minggu ke-25 tahun 2020, partisi yang dibuat dua minggu sebelumnya dihapus. Dalam hal ini, partisi p2020_22 dihapus.

    Dalam contoh di atas, jika parameter dynamic_partition.start_day_of_week disetel ke 3 (hari Rabu sebagai titik awal setiap minggu), partisi berikut dibuat:

    p2020_22: ["2020-05-27 00:00:00", "2020-06-03 00:00:00")
    p2020_23: ["2020-06-03 00:00:00", "2020-06-10 00:00:00")
    p2020_24: ["2020-06-10 00:00:00", "2020-06-17 00:00:00")

    Partisi yang dibuat berada dalam rentang waktu dari Rabu minggu ini hingga Selasa minggu depan.

    Catatan

    Tanggal 2019-12-31 dan 2020-01-01 termasuk dalam minggu yang sama. Jika titik awal partisi adalah 2019-12-31, partisi tersebut diberi nama p2019_53. Jika titik awal partisi adalah 2020-01-01, partisi tersebut diberi nama p2020_01.

  • Konfigurasikan aturan partisi dinamis untuk tabel tbl1 dengan kolom kunci partisi k1 bertipe DATE. Data dipartisi berdasarkan bulan. Tidak ada partisi historis yang dihapus, dan partisi untuk dua bulan ke depan dibuat terlebih dahulu. Selain itu, hari ketiga setiap bulan ditentukan sebagai titik awal setiap bulan.

    CREATE TABLE tbl1
    (
    	k1 DATE,
      ...
    )
    PARTITION BY RANGE(k1) ()
    DISTRIBUTED BY HASH(k1)
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true",
    	"dynamic_partition.time_unit" = "MONTH",
    	"dynamic_partition.end" = "2",
    	"dynamic_partition.prefix" = "p",
    	"dynamic_partition.create_history_partition" = "true",
            "dynamic_partition.history_partition_num" = "6",
    	"dynamic_partition.buckets" = "8",
    	"dynamic_partition.start_day_of_month" = "3"
    );

    Sebagai contoh, tanggal saat ini adalah 2020-05-29. Berdasarkan aturan sebelumnya, partisi berikut dibuat untuk tabel tbl1:

    p202005: ["2020-05-03", "2020-06-03")
    p202006: ["2020-06-03", "2020-07-03")
    p202007: ["2020-07-03", "2020-08-03")

    Karena parameter dynamic_partition.start dibiarkan kosong, partisi historis tidak dihapus.

    Sebagai contoh, jika tanggal saat ini adalah 2020-05-20 dan titik awal adalah hari kedua puluh delapan setiap bulan, partisi berikut dibuat:

    p202004: ["2020-04-28", "2020-05-28")
    p202005: ["2020-05-28", "2020-06-28")
    p202006: ["2020-06-28", "2020-07-28")

Modifikasi parameter partisi dinamis

Jalankan pernyataan berikut pada waktu proses untuk memodifikasi parameter partisi dinamis:

ALTER TABLE tbl1 SET( "dynamic_partition.prop1" = "value1", ...);

Jika Anda memodifikasi parameter partisi dinamis tertentu, konflik mungkin terjadi. Sebagai contoh, data dipartisi berdasarkan hari, dan partisi berikut dibuat:

p20200519: ["2020-05-19", "2020-05-20")
p20200520: ["2020-05-20", "2020-05-21")
p20200521: ["2020-05-21", "2020-05-22")

Jika Anda mempartisi data berdasarkan bulan, sistem akan mencoba membuat partisi dengan rentang ["2020-05-01", "2020-06-01"). Namun, rentang ini bertentangan dengan rentang partisi yang sudah ada, sehingga partisi tidak dapat dibuat. Sebaliknya, partisi dengan rentang ["2020-06-01", "2020-07-01") dapat dibuat. Dalam situasi ini, Anda perlu membuat partisi untuk rentang waktu 2020-05-22 hingga 2020-05-30.

Hapus partisi dalam tabel yang dipartisi secara dinamis

Sebelum menghapus partisi dalam tabel yang dipartisi secara dinamis, nonaktifkan terlebih dahulu fitur partisi dinamis dengan menjalankan pernyataan berikut:

ALTER TABLE tbl1 SET ("dynamic_partition.enable" = "false");

Selanjutnya, jalankan pernyataan berikut untuk menghapus partisi tertentu:

ALTER TABLE tbl1 DROP PARTITION p20200519;

Secara umum, setelah Anda menghapus partisi dalam tabel yang dipartisi secara dinamis, Anda perlu mengaktifkan kembali fitur partisi dinamis sehingga ApsaraDB for SelectDB dapat terus mengelola partisi secara otomatis selama operasi bisnis berikutnya.

ALTER TABLE tbl1 SET ("dynamic_partition.enable" = "true");

Kueri status penjadwalan tabel yang dipartisi secara dinamis

Jalankan pernyataan berikut untuk memeriksa status penjadwalan semua tabel yang dipartisi secara dinamis di database saat ini:

mysql> SHOW DYNAMIC PARTITION TABLES;
+-----------+--------+----------+-------------+------+--------+---------+-----------+----------------+---------------------+--------+------------------------+----------------------+-------------------------+
| TableName | Enable | TimeUnit | Start       | End  | Prefix | Buckets | StartOf   | LastUpdateTime | LastSchedulerTime   | State  | LastCreatePartitionMsg | LastDropPartitionMsg | ReservedHistoryPeriods  |
+-----------+--------+----------+-------------+------+--------+---------+-----------+----------------+---------------------+--------+------------------------+----------------------+-------------------------+
| d3        | true   | WEEK     | -3          | 3    | p      | 1       | MONDAY    | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | [2021-12-01,2021-12-31] |
| d5        | true   | DAY      | -7          | 3    | p      | 32      | N/A       | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
| d4        | true   | WEEK     | -3          | 3    | p      | 1       | WEDNESDAY | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    | 
| d6        | true   | MONTH    | -2147483648 | 2    | p      | 8       | 3rd       | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
| d2        | true   | DAY      | -3          | 3    | p      | 32      | N/A       | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
| d7        | true   | MONTH    | -2147483648 | 5    | p      | 8       | 24th      | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
+-----------+--------+----------+-------------+------+--------+---------+-----------+----------------+---------------------+--------+------------------------+----------------------+-------------------------+
7 rows in set (0.02 sec)
  • LastUpdateTime: waktu terakhir parameter partisi dinamis dimodifikasi.

  • LastSchedulerTime: waktu terakhir penjadwalan partisi dinamis dilakukan.

  • State: status terakhir penjadwalan partisi dinamis.

  • LastCreatePartitionMsg: pesan kesalahan yang dihasilkan saat pembuatan partisi dinamis terakhir.

  • LastDropPartitionMsg: pesan kesalahan yang dihasilkan saat penghapusan partisi dinamis terakhir.

Operasi lanjutan

Tabel yang dipartisi secara dinamis dapat diubah menjadi tabel yang dipartisi secara manual. Namun, sebuah tabel hanya bisa dipartisi secara dinamis atau manual.

Mengubah tabel yang dipartisi secara manual menjadi tabel yang dipartisi secara dinamis

Jika Anda belum mengonfigurasi aturan partisi dinamis untuk tabel saat pembuatan, Anda dapat memodifikasi parameter partisi dinamis dengan menjalankan pernyataan ALTER TABLE pada waktu proses untuk menetapkan aturan partisi dinamis pada tabel tersebut.

Setelah fitur partisi dinamis diaktifkan, Anda tidak dapat lagi mengelola partisi secara manual. Sistem akan secara otomatis mengelola partisi berdasarkan parameter partisi dinamis yang telah Anda tentukan.

Penting

Jika parameter dynamic_partition.start ditentukan, partisi historis dalam rentang waktu tertentu sebelum offset awal partisi dinamis akan dihapus.

Mengubah tabel yang dipartisi secara dinamis menjadi tabel yang dipartisi secara manual

Anda dapat menjalankan pernyataan ALTER TABLE tbl_name SET ("dynamic_partition.enable" = "false") untuk menonaktifkan fitur partisi dinamis dan mengubah tabel yang dipartisi secara dinamis menjadi tabel yang dipartisi secara manual.

Setelah fitur partisi dinamis dinonaktifkan, partisi tidak lagi dikelola secara otomatis. Anda harus menjalankan pernyataan ALTER TABLE untuk membuat atau menghapus partisi.

FAQ

  • Q: Apa yang harus saya lakukan jika kesalahan "Could not create table with dynamic partition when fe config dynamic_partition_enable is false" dilaporkan ketika saya membuat tabel yang dipartisi secara dinamis?

    A: Anda tidak dapat membuat tabel yang dipartisi secara dinamis karena parameter global dynamic_partition_enable dari fitur partisi dinamis disetel ke false. Jalankan perintah ADMIN SET FRONTEND CONFIG ("dynamic_partition_enable" = "true") untuk menyetel parameter global ini ke true.

  • Q: Bagaimana cara menentukan jumlah bucket untuk partisi yang dibuat secara dinamis?

    A: Partisi yang dibuat secara dinamis dibuat secara otomatis oleh proses penjadwalan internal sistem. Ketika partisi dibuat secara otomatis untuk tabel, sistem menggunakan pengaturan parameter partisi dinamis yang namanya diawali dengan dynamic_partition alih-alih pengaturan parameter default tabel. Parameter partisi dinamis yang diterapkan juga menentukan jumlah bucket dalam partisi. Contoh kode berikut memberikan ilustrasi:

    CREATE TABLE tbl1 (
    `k1` int,
    `k2` date
    )
    PARTITION BY RANGE(k2)()
    DISTRIBUTED BY HASH(k1) BUCKETS 3
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true",
    	"dynamic_partition.time_unit" = "DAY",
    	"dynamic_partition.start" = "-3",
    	"dynamic_partition.end" = "3",
    	"dynamic_partition.prefix" = "p",
    	"dynamic_partition.create_history_partition" = "true",
    	"dynamic_partition.buckets" = "32"
    );

    Dalam contoh sebelumnya, tidak ada partisi awal yang dibuat karena klausa PARTITION BY tidak berisi definisi partisi. Parameter berikut ditentukan: DISTRIBUTED BY HASH(k1) BUCKETS 3 dan "dynamic_partition.buckets" = "32".

    Pengaturan parameter pertama adalah pengaturan default tabel, dan pengaturan parameter kedua bersifat eksklusif untuk partisi dinamis. Ketika sistem secara otomatis membuat partisi, jumlah bucket diatur ke 32 bukan 3. Saat Anda membuat partisi secara manual dengan menjalankan pernyataan ALTER TABLE tbl1 ADD PARTITION, jumlah bucket diatur ke 3. Partisi yang dibuat secara dinamis menggunakan satu set pengaturan parameter terpisah. Pengaturan parameter default tabel digunakan hanya jika tidak ada pengaturan parameter eksklusif yang dikonfigurasikan untuk partisi dinamis.

    CREATE TABLE tbl3 (
    `k1` int,
    `k2` date
    )
    PARTITION BY RANGE(k2)(
    	PARTITION p1 VALUES LESS THAN ("2019-10-10")
    )
    DISTRIBUTED BY HASH(k1) BUCKETS 3
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true",
    	"dynamic_partition.time_unit" = "DAY",
    	"dynamic_partition.start" = "-3",
    	"dynamic_partition.end" = "3",
    	"dynamic_partition.prefix" = "p",
            "dynamic_partition.create_history_partition" = "true",
    	"dynamic_partition.buckets" = "32"
    );

    Dalam contoh ini, partisi p1 dibuat secara manual. Partisi ini menggunakan pengaturan parameter default tabel dan jumlah bucket diatur ke 3. Namun, partisi yang dibuat secara dinamis oleh sistem masih menggunakan pengaturan parameter eksklusif untuk partisi dinamis dan jumlah bucket diatur ke 32.