Fitur partisi dinamis di Hologres secara otomatis membuat dan mengelola partisi anak berdasarkan aturan yang dikonfigurasi saat pembuatan tabel, tanpa perlu mendefinisikan semua partisi terlebih dahulu. Fitur ini juga mendukung migrasi data yang memenuhi syarat ke penyimpanan dingin untuk menjaga kinerja kueri sekaligus mengurangi biaya penyimpanan.
Pengenalan Fungsi
Daftar berikut menjelaskan dukungan fitur pada berbagai versi Hologres:
Mulai dari Hologres V1.3, Anda dapat mengonfigurasi aturan partisi dinamis. Sistem secara berkala menjalankan task penjadwalan berdasarkan aturan tersebut untuk membuat partisi anak yang akan datang dan menghapus partisi yang kedaluwarsa.
Mulai dari Hologres V1.3.37, manajemen dinamis penyimpanan bertingkat untuk data panas dan dingin didukung. Fitur ini secara otomatis memindahkan data ke cold storage untuk mengurangi biaya penyimpanan. Untuk informasi selengkapnya, lihat Tiered storage.
Pada Hologres versi 2.1.11 dan seterusnya, partisi dinamis mendukung tipe Date sebagai kunci partisi.
Mulai dari Hologres V2.2, Anda dapat menggunakan properti
schd_start_timedalam tabel konfigurasi partisi dinamis untuk menyesuaikan waktu penjadwalan partisi. Hal ini memungkinkan Anda menetapkan waktu khusus untuk membuat, menghapus, dan memindahkan partisi ke cold storage.Mulai dari Hologres V3.0.12, parameter baru
auto_partitioning_time_formattersedia. Gunakan parameter ini untuk menentukan format tanggal dan waktu kunci partisi. Misalnya, Anda dapat menentukan bahwa partisi dibuat dalam format YYYY-MM-DD.
Tindakan Pencegahan
Hologres memungkinkan Anda mengimpor data ke tabel anak, bukan ke tabel induk.
CatatanRealtime Compute for Apache Flink memungkinkan Anda mengimpor data ke tabel induk di Hologres secara real time. Untuk informasi selengkapnya, lihat Write data to a partitioned Hologres sink table in real time.
Setiap aturan partisi hanya dapat digunakan untuk membuat satu tabel partisi.
Klausa
PARTITION BYhanya mendukunglist partitioning. Kunci partisi harus berupa satu kolom.Jika tabel partisi memiliki primary key, kunci partisi harus merupakan subset dari primary key tersebut.
Fitur partisi dinamis hanya mendukung pengaturan waktu penjadwalan (
schd_start_time) untuk tabel induk. Anda tidak dapat mengaturnya untuk partisi anak.Parameter
auto_partitioning_time_formathanya dapat diatur sekali dan tidak dapat diubah setelah ditetapkan. Untuk tabel baru, atur parameter ini menggunakan pernyataan CREATE TABLE. Anda tidak dapat mengubah parameter ini untuk tabel yang sudah ada.Setelah Anda menentukan format waktu menggunakan parameter
auto_partitioning_time_format, format penamaan partisi anak akan sesuai dengan format tanggal kunci partisi. Saat Anda melakukan kueri terhadap partisi anak, Anda harus membungkus nama tabel anak dengan tanda kutip ganda. Contohnya:SELECT xxx FROM "tbl_2024_11_22".
Konfigurasi partisi dinamis
Deskripsi sintaksis
Anda dapat mengonfigurasi properti manajemen partisi dinamis saat membuat tabel partisi atau mengubahnya setelah tabel dibuat. Sintaksisnya adalah sebagai berikut.
Contoh menggunakan klausa WITH
Konfigurasi properti manajemen partisi dinamis saat membuat tabel partisi.
-- Konfigurasi properti manajemen partisi dinamis saat membuat tabel partisi. CREATE TABLE [IF NOT EXISTS] [<schema_name>.]<table_name> ([ { <column_name> <column_type> [ <column_constraints>, [...]] | <table_constraints> [, ...] } ]) PARTITION BY LIST(<column_name>) WITH ( auto_partitioning_enable = 'xxx', auto_partitioning_time_unit = 'xxx', auto_partitioning_time_zone = 'xxx', auto_partitioning_num_precreate = 'xxx', auto_partitioning_num_retention = 'xxx', auto_partitioning_num_hot='xxx', -- Catatan: Parameter schd_start_time didukung di Hologres V2.2 dan versi selanjutnya. auto_partitioning_schd_start_time = 'xxx', -- Catatan: Parameter time_format didukung di Hologres V3.0.12 dan versi selanjutnya. auto_partitioning_time_format = 'xxx' );Ubah properti manajemen partisi dinamis setelah membuat tabel partisi.
-- Ubah properti manajemen partisi dinamis. ALTER TABLE [<schema_name>.]<table_name> SET ( auto_partitioning_enable = 'xxx', auto_partitioning_time_unit = 'xxx', auto_partitioning_time_zone = 'xxx', auto_partitioning_num_precreate = 'xxx', auto_partitioning_num_retention = 'xxx', auto_partitioning_num_hot='xxx', -- Catatan: Parameter schd_start_time didukung di Hologres V2.2 dan versi selanjutnya. auto_partitioning_schd_start_time = 'xxx', -- Catatan: Parameter time_format didukung di Hologres V3.0.12 dan versi selanjutnya. auto_partitioning_time_format = 'xxx' );
Contoh menggunakan pernyataan CALL
Konfigurasi properti manajemen partisi dinamis saat membuat tabel partisi.
-- Konfigurasi properti manajemen partisi dinamis saat membuat tabel partisi. BEGIN; CREATE TABLE [IF NOT EXISTS] [<schema_name>.]<table_name> ([ { <column_name> <column_type> [ <column_constraints>, [...]] | <table_constraints> [, ...] } ]) PARTITION BY LIST(<column_name>); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.enable', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_unit', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_zone', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_precreate', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_retention', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_hot', 'xxx'); -- Catatan: Parameter schd_start_time didukung di Hologres V2.2 dan versi selanjutnya. CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.schd_start_time', 'xxx'); -- Catatan: Parameter time_format didukung di Hologres V3.0.12 dan versi selanjutnya. CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx'); COMMIT;Ubah properti manajemen partisi dinamis setelah membuat tabel partisi.
-- Ubah properti manajemen partisi dinamis. CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.enable', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_precreate', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_retention', 'xxx'); -- Catatan: Parameter time_format didukung di Hologres V3.0.12 dan versi selanjutnya. CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx');
Deskripsi parameter
Saat Anda menggunakan sintaksis CREATE TABLE WITH untuk mengonfigurasi partisi dinamis, ganti titik (.) dalam nama parameter dengan garis bawah (_). Misalnya, ubah auto_partitioning.enable menjadi auto_partitioning_enable.
Nama parameter | Wajib | Deskripsi | Dapat diperbarui | Persyaratan versi |
| Tidak | Menentukan apakah manajemen partisi dinamis diaktifkan. Nilai yang valid:
| Ya | Hologres V1.3 dan versi selanjutnya |
| Ya | Unit waktu untuk partisi dinamis. Nilai yang valid:
Contohnya, jika Anda mengatur parameter ini ke DAY, partisi akan dibuat dan dihapus setiap hari. | Tidak | |
| Tidak | Zona waktu untuk partisi dinamis. Nilai default adalah zona waktu koneksi saat ini. Setelah Anda mengonfigurasi parameter ini, manajemen partisi dinamis dilakukan berdasarkan waktu di zona waktu yang ditentukan. Anda dapat menjalankan pernyataan SQL berikut untuk melihat zona waktu yang tersedia beserta offset-nya. Nilai pada kolom name pada hasilnya adalah nilai timezone, seperti Asia/Shanghai. | Tidak | |
| Tidak | Jumlah partisi yang akan dibuat sebelumnya. Nilai yang valid:
Catatan Contohnya, jika waktu saat ini adalah 2022-01-10, pengaturan parameter Penting Pembuatan partisi sebelumnya memengaruhi perilaku fungsi MAX_PT. Sebelum mengonfigurasi parameter ini, periksa apakah workload Anda bergantung pada fungsi MAX_PT. | Ya | |
| Tidak | Jumlah partisi historis yang dipertahankan. Nilai yang valid:
Anda dapat menjalankan Catatan Contohnya, jika tanggal saat ini adalah 2022-01-10, dan Anda mengatur | Ya | |
| Tidak | Jumlah partisi panas yang dipertahankan. Nilai yang valid:
| Hologres V1.3.37 dan versi selanjutnya | |
| Tidak | Waktu penjadwalan partisi khusus. Jika Anda dapat menggunakan parameter ini untuk mengubah waktu penjadwalan. Untuk format tanggal dan waktu yang didukung, lihat Date/Time Types. Jika Anda mengatur waktu di masa depan, konfigurasi akan berlaku pada waktu tersebut. | Hologres V2.2 dan versi selanjutnya | |
| Tidak | Menentukan format tanggal dan waktu kunci partisi saat membuat tabel.
| Tidak | Hologres V3.0.12 dan versi selanjutnya |
Aturan pembuatan nama tabel
Saat parameter auto_partitioning.time_unit diatur ke HOUR, DAY, MONTH, QUARTER, atau YEAR, partisi dinamis menggunakan nama tabel induk ditambah akhiran waktu sebagai nama untuk partisi yang baru dibuat. Formatnya adalah {parent_table}_{time_suffix}. Akhiran waktu dihasilkan berdasarkan waktu penjadwalan untuk partisi otomatis dan templat format yang sesuai dengan unit waktu. Pemetaan spesifiknya adalah sebagai berikut.
Unit waktu | Format akhiran waktu | Contoh | Waktu eksekusi |
HOUR | YYYYMMDDHH24 | 2024112221. | Dimulai di awal setiap jam. Misalnya, task dijalankan pukul 21:00:01 pada 22 November 2024. |
YYYY-MM-DD-HH24 | 2024-11-22-21. | ||
DAY | YYYYMMDD | 20241122. | Dimulai pukul 00:00:01 setiap hari. Misalnya, 00:00:01 pada 22 November 2024. |
YYYY-MM-DD | 2024-11-22. | ||
MONTH | YYYYMM | 202411. | Dimulai pukul 00:00:01 pada hari pertama setiap bulan. Misalnya, 00:00:01 pada 1 November 2024. |
YYYY-MM | 2024-11. | ||
QUARTER | YYYYQ | 20241, 20242, 20243, dan 20244 mewakili empat kuartal tahun 2024. | Dimulai pukul 00:00:01 pada hari pertama setiap kuartal. Misalnya, 00:00:01 pada 1 Januari 2024. |
YYYY-Q | 2024-1, 2024-2, 2024-3, dan 2024-4 mewakili empat kuartal tahun 2024. | ||
YEAR | YYYY | 2023 dan 2024 mewakili partisi untuk tahun 2023 dan 2024. | Dimulai pukul 00:00:01 pada hari pertama setiap tahun. Misalnya, 00:00:01 pada 1 Januari 2023. |
Contoh
Contoh berikut menunjukkan cara mengatur unit waktu ke DAY, membuat partisi untuk 3 hari ke depan, menyimpan partisi historis selama 2 hari terakhir, dan mengatur zona waktu ke Asia/Shanghai.
Contoh menggunakan klausa WITH
Buat tabel partisi
tbl1.-- Di V2.1, buat tabel partisi dan konfigurasi manajemen partisi dinamis: CREATE TABLE tbl1 ( c1 TEXT NOT NULL, c2 TEXT ) PARTITION BY LIST (c2) WITH ( auto_partitioning_enable = 'true', auto_partitioning_time_unit = 'DAY', auto_partitioning_time_zone = 'Asia/Shanghai', auto_partitioning_num_precreate = '3', auto_partitioning_num_retention = '2' );Setelah partisi anak dibuat, masukkan data.
INSERT INTO tbl1 (c1, c2) VALUES ('Data 1', '20231212'); INSERT INTO tbl1 (c1, c2) VALUES ('Data 2', '20231213'); INSERT INTO tbl1 (c1, c2) VALUES ('Data 3', '20231214');Lakukan kueri data.
SELECT * FROM tbl1 WHERE c2='20231212';Hasil berikut dikembalikan:
c1 c2 Data 1 20231212
Contoh menggunakan pernyataan CALL
Buat tabel partisi
tbl1.-- Buat tabel partisi dan konfigurasi manajemen partisi dinamis: BEGIN; CREATE TABLE tbl1 ( c1 TEXT NOT NULL, c2 TEXT ) PARTITION BY LIST (c2); CALL set_table_property ('tbl1', 'auto_partitioning.enable', 'true'); CALL set_table_property ('tbl1', 'auto_partitioning.time_unit', 'DAY'); CALL set_table_property ('tbl1', 'auto_partitioning.time_zone', 'Asia/Shanghai'); CALL set_table_property ('tbl1', 'auto_partitioning.num_precreate', '3'); CALL set_table_property ('tbl1', 'auto_partitioning.num_retention', '2'); COMMIT;Setelah partisi anak dibuat, masukkan data.
INSERT INTO tbl1 (c1, c2) VALUES ('Data 1', '20231212'); INSERT INTO tbl1 (c1, c2) VALUES ('Data 2', '20231213'); INSERT INTO tbl1 (c1, c2) VALUES ('Data 3', '20231214');Lakukan kueri data.
SELECT * FROM tbl1 WHERE c2='20231212';Hasil berikut dikembalikan:
c1 c2 Data 1 20231212
Logika penambahan dan penghapusan partisi adalah sebagai berikut:
Waktu | Peristiwa | Hasil |
2023-12-12 09:00:00 | Jalankan pernyataan SQL di atas untuk membuat tabel partisi. |
|
2023-12-13 00:00:00 | Sistem secara otomatis membuat partisi anak. |
|
2023-12-14 00:00:00 | Sistem secara otomatis membuat partisi anak. |
|
2023-12-15 00:00:00 | Sistem secara otomatis membuat partisi anak dan menghapus partisi anak. |
|
2023-12-16 00:00:00 | Sistem secara otomatis membuat partisi anak dan menghapus partisi anak. |
|
Skenario umum
Simpan partisi anak tertentu
Secara default, sistem secara otomatis membuat dan menghapus partisi anak berdasarkan aturan partisi dinamis yang dikonfigurasi. Partisi anak di luar rentang retensi akan dihapus secara otomatis. Namun, dalam beberapa skenario, Anda mungkin perlu menyimpan data di partisi penting. Misalnya, dalam skenario e-commerce, Anda mungkin perlu menyimpan data dari festival belanja Double 11 setiap tahun untuk analisis year-over-year dan month-over-month. Anda dapat menyimpan partisi anak tertentu dengan menambahkan properti keep_alive ke tabel. Sintaksisnya adalah sebagai berikut.
Sintaksis yang didukung mulai dari V2.1:
-- Simpan partisi ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'true'); -- Berhenti menyimpan partisi: Setelah properti retensi dihapus, manajemen partisi dinamis segera memicu penghapusan data yang kedaluwarsa. ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'false');Sintaksis yang didukung di semua versi:
-- Simpan partisi CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'true'); -- Berhenti menyimpan partisi: Setelah properti retensi dihapus, manajemen partisi dinamis segera memicu penghapusan data yang kedaluwarsa. CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'false');CatatanGanti table_name dengan nama aktual partisi anak.
Kelola media penyimpanan secara dinamis untuk tabel partisi
Saat bekerja dengan tabel partisi, penggunaan penyimpanan bertingkat untuk data panas dan dingin dapat secara efektif menyeimbangkan biaya dan kinerja. Misalnya, Anda dapat secara dinamis menyimpan N partisi historis terbaru di media penyimpanan panas untuk memenuhi permintaan kueri yang sering, sementara menyimpan M partisi berikutnya di cold storage untuk menghemat biaya. Anda dapat menerapkan skenario ini menggunakan fitur manajemen partisi dinamis untuk menghapus data yang lebih tua dari N+M partisi.
Buat tabel partisi dinamis
Contoh: Buat satu partisi per hari. Secara dinamis simpan 7 partisi historis terbaru di media penyimpanan panas. Simpan 23 partisi berikutnya (lebih dari 7 hari) di media penyimpanan dingin. Hapus partisi yang lebih tua dari rentang ini. Kode berikut memberikan contoh.
BEGIN;
CREATE TABLE tbl2(
c1 text not null,
c2 text
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl2', 'auto_partitioning.enable', 'true');
CALL set_table_property('tbl2', 'auto_partitioning.time_unit', 'DAY');
CALL set_table_property('tbl2', 'auto_partitioning.num_precreate', '3');
CALL set_table_property('tbl2', 'auto_partitioning.num_hot', '7');
CALL set_table_property('tbl2', 'auto_partitioning.num_retention', '30');
COMMIT;Efeknya ditunjukkan pada gambar berikut:

Ubah kebijakan penyimpanan
Anda dapat mengubah kebijakan partisi untuk media penyimpanan panas dengan mengubah nilai parameter auto_partitioning.num_hot. Perhatikan bahwa jika Anda mengubah kebijakan ini, partisi anak yang sudah berada di cold storage tidak akan secara otomatis dipindahkan ke hot storage. Asumsikan tanggal saat ini adalah 1 Juli 2022, dan Anda membuat tabel partisi berikut.
BEGIN;
CREATE TABLE tbl_p(
c1 text not null,
c2 text
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl_p', 'auto_partitioning.enable', 'true');
CALL set_table_property('tbl_p', 'auto_partitioning.time_unit', 'DAY');
CALL set_table_property('tbl_p', 'auto_partitioning.num_precreate', '3');
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '3');
CALL set_table_property('tbl_p', 'auto_partitioning.num_retention', '10');
COMMIT;Distribusi data dalam kasus ini memiliki dua kemungkinan skenario:
Skenario 1: Memperluas kebijakan partisi penyimpanan panas
Untuk mengubah jumlah partisi panas dalam kebijakan manajemen dinamis menjadi 4, jalankan kode berikut:
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '4');Karena partisi anak yang sudah berada di cold storage tidak secara otomatis dipindahkan ke hot storage, efek setelah perubahan ditunjukkan pada gambar berikut:

Skenario 2: Mengurangi batas cutoff penyimpanan panas dalam kebijakan partisi
Untuk mengubah jumlah partisi panas dalam kebijakan manajemen dinamis menjadi 2, jalankan kode berikut:
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '2');Partisi anak yang sudah berada di cold storage tidak secara otomatis dipindahkan ke hot storage. Namun, data yang perlu dipindahkan dari hot ke cold storage akan dimigrasikan. Efek setelah perubahan ditunjukkan pada gambar berikut:

Ubah tabel partisi cold storage menjadi tabel partisi dinamis
Sebagai contoh, untuk mengubah tabel partisi dengan properti cold storage menjadi tabel partisi dinamis dan mengatur partisi 7 hari terakhir ke hot storage, gunakan metode berikut.
Persiapan data.
-- Tentukan cold storage sebagai kebijakan penyimpanan saat membuat tabel. BEGIN; CREATE TABLE tbl2( c1 TEXT NOT NULL, c2 TEXT ) PARTITION BY LIST(c2); CALL set_table_property('tbl2', 'storage_mode', 'cold'); CREATE TABLE tbl2_20230808 PARTITION OF tbl2 FOR VALUES IN('20230808'); CREATE TABLE tbl2_20230809 PARTITION OF tbl2 FOR VALUES IN('20230809'); CREATE TABLE tbl2_20230810 PARTITION OF tbl2 FOR VALUES IN('20230810'); CREATE TABLE tbl2_20230817 PARTITION OF tbl2 FOR VALUES IN('20230817'); COMMIT;Ubah tabel menjadi tabel partisi dinamis dan atur partisi 7 hari terakhir ke hot storage.
BEGIN; CALL set_table_property('tbl2', 'storage_mode', 'hot'); -- Atur tabel induk ke hot. CALL set_table_property('tbl2_20230810', 'storage_mode', 'cold'); -- Atur partisi yang tidak perlu dipindahkan ke hot storage menjadi cold. CALL set_table_property('tbl2_20230809', 'storage_mode', 'cold'); CALL set_table_property('tbl2_20230808', 'storage_mode', 'cold'); CALL set_table_property('tbl2', 'auto_partitioning.enable', 'true'); CALL set_table_property('tbl2', 'auto_partitioning.time_unit', 'DAY'); CALL set_table_property('tbl2', 'auto_partitioning.num_precreate', '3'); CALL set_table_property('tbl2', 'auto_partitioning.num_hot', '7'); CALL set_table_property('tbl2', 'auto_partitioning.num_retention', '10'); COMMIT;
Lihat konfigurasi partisi dinamis dan status penjadwalan
Jalankan pernyataan SQL berikut untuk mengkueri informasi tentang tabel partisi dinamis dan konfigurasinya di database saat ini.
SELECT
nsp_name AS schema_name,
tbl_name AS table_name,
ENABLE,
time_unit,
time_zone,
num_precreate,
num_retention,
b.usename AS create_user,
cret_time,
schd_start_time,
options
FROM
hologres.hg_partitioning_config AS a
LEFT JOIN pg_user AS b ON a.cret_user = b.usesysid;Berikut ini penjelasan field-field tersebut.
Nama field | Deskripsi |
schema_name | Nama skema. |
table_name | Nama tabel. |
ENABLE | Menunjukkan apakah manajemen partisi dinamis diaktifkan. |
time_unit | Unit waktu untuk partisi dinamis. |
time_zone | Zona waktu untuk partisi dinamis. |
num_precreate | Jumlah partisi yang dibuat sebelumnya. |
num_retention | Jumlah partisi historis yang disimpan. |
create_user | Anda dapat membuat pengguna. |
cret_time | Waktu pembuatan. |
schd_start_time | Waktu penjadwalan terbaru. |
Hasil berikut dikembalikan.

Lihat log pembuatan dan penghapusan partisi anak
Query Log tidak mencatat log pembuatan dan penghapusan partisi anak. Jalankan pernyataan SQL berikut untuk mengkueri log tersebut.
SELECT
relname,
relowner,
schdtime,
trigtime,
status,
message,
precreate,
discard
FROM
hologres.hg_partitioning_log Berikut ini penjelasan nama field yang tercantum di atas.
Nama field | Deskripsi |
relname | schema.table |
relowner | Pemilik tabel partisi. |
schdtime | Waktu penjadwalan. |
trigtime | Waktu pemicu aktual. |
status | Status. |
message | Keterangan. |
precreate | Nama partisi anak yang dibuat. |
discard | Nama partisi anak yang dihapus. |
Hasil berikut dikembalikan.

FAQ
Bagaimana cara mengaktifkan partisi dinamis untuk tabel partisi yang sudah ada?
Gunakan pernyataan SQL berikut untuk mengaktifkan partisi dinamis untuk tabel partisi yang sudah ada.
-- Contoh SQL untuk Hologres V2.1 dan versi selanjutnya
ALTER TABLE auto_part_old SET (
auto_partitioning_enable = 'true',
auto_partitioning_time_unit = 'HOUR',
auto_partitioning_time_zone = 'PRC',
auto_partitioning_num_precreate = '4',
auto_partitioning_num_retention = '-1',
auto_partitioning_num_hot = '-1'
);
-- Contoh SQL untuk semua versi Hologres
BEGIN;
CALL set_table_property('auto_part_old', 'auto_partitioning.enable', 'true');
CALL set_table_property('auto_part_old', 'auto_partitioning.time_unit', 'HOUR');
CALL set_table_property('auto_part_old', 'auto_partitioning.time_zone', 'PRC');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_precreate', '4');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_retention', '-1');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_hot', '-1');
COMMIT;Parameter auto_partitioning.time_unit dan auto_partitioning.time_zone adalah konfigurasi inti untuk fitur partisi dinamis. Setelah Anda melakukan upgrade Hologres, Anda hanya dapat mengatur parameter ini sekali. Parameter tersebut tidak dapat diubah setelah ditetapkan.
Setelah saya mengaktifkan partisi dinamis untuk tabel partisi yang sudah ada, apakah partisi anak historis terpengaruh oleh logika penghapusan otomatis?
Sistem menghapus partisi anak berdasarkan namanya. Jika nama partisi anak sesuai dengan konvensi penamaan {parent_table}_{time_suffix}, partisi tersebut akan dihapus. Jika tidak, partisi tersebut tidak akan dihapus.
Saya membuat tabel partisi dinamis dan mengatur num_precreate ke 3. Tabel induk berhasil dibuat setelah saya menjalankan pernyataan SQL, tetapi ketiga partisi anak tidak dibuat. Mengapa?
Untuk task awal pembuatan partisi dinamis, sistem memeriksa setiap 10 menit secara default. Oleh karena itu, partisi anak akan dibuat dalam waktu 10 menit. Periksa kembali nanti.