Fitur pembagian partisi dinamis dari Hologres secara otomatis membuat dan mengelola tabel partisi anak berdasarkan aturan pembagian partisi yang Anda konfigurasikan saat membuat tabel partisi. Anda tidak perlu mengonfigurasikan semua partisi saat membuat tabel partisi. Fitur ini juga dapat memigrasikan data dalam partisi yang memenuhi kondisi tertentu ke kelas penyimpanan Infrequent Access (IA), membantu Hologres mengurangi biaya penyimpanan tanpa menurunkan kinerja kueri.
Pengenalan
Fitur pembagian partisi dinamis dioptimalkan di berbagai versi untuk memberikan lebih banyak fungsi:
Hologres V1.3 dan yang lebih baru memungkinkan Anda mengonfigurasikan aturan pembagian partisi dinamis. Sistem menjalankan tugas terjadwal untuk membuat tabel partisi anak sebelumnya dan menghapus tabel partisi anak yang kedaluwarsa berdasarkan aturan tersebut.
Hologres V1.3.37 dan yang lebih baru mendukung manajemen dinamis penyimpanan bertingkat untuk data panas dan dingin, sehingga penyimpanan dingin dapat digunakan secara otomatis untuk data. Hal ini membantu mengurangi biaya penyimpanan. Untuk informasi lebih lanjut, lihat Penyimpanan Bertingkat untuk Data Panas dan Dingin.
Hologres V2.1.11 dan yang lebih baru memungkinkan Anda mengonfigurasikan kolom bertipe DATE sebagai kolom kunci partisi untuk pembagian partisi dinamis.
Hologres V2.2 dan yang lebih baru memungkinkan Anda mengonfigurasikan properti
schd_start_timesaat mengonfigurasikan pembagian partisi dinamis untuk sebuah tabel. Properti ini digunakan untuk menentukan waktu ketika partisi dijadwalkan untuk dibuat, dihapus, atau disimpan di tingkat penyimpanan dingin.Hologres V3.0.12 dan yang lebih baru memungkinkan Anda mengonfigurasikan parameter
auto_partitioning_time_format, yang menentukan format datetime kolom kunci partisi, misalnya YYYY-MM-DD.
Catatan penggunaan
Hologres memungkinkan Anda mengimpor data ke tabel anak, bukan tabel induk.
CatatanRealtime Compute for Apache Flink memungkinkan Anda mengimpor data ke tabel induk di Hologres secara real-time. Untuk informasi lebih lanjut, lihat Menulis Data ke Tabel Hasil Partisi di Hologres secara Real-Time.
Setiap aturan pembagian partisi hanya dapat digunakan untuk membuat satu tabel partisi.
Klausa
PARTITION BYhanya mendukunglist partitioning. Kunci partisi harus berupa satu kolom.Jika tabel partisi memiliki kunci utama, kunci partisi harus menjadi subset dari kunci utama.
Anda hanya dapat mengonfigurasikan properti
schd_start_timeuntuk tabel partisi induk, tetapi tidak untuk tabel partisi anak.Parameter
auto_partitioning_time_formathanya dapat dikonfigurasikan sekali dan tidak dapat diubah setelah dikonfigurasikan. Untuk tabel baru, Anda dapat mengonfigurasikan parameter ini dalam pernyataan CREATE TABLE. Untuk tabel yang sudah ada, Anda tidak dapat mengubah parameter ini.Setelah Anda menentukan format waktu dengan menggunakan parameter
auto_partitioning_time_format, tabel partisi anak diberi nama dalam format yang sama dengan kolom kunci partisi. Saat Anda mengkueri data dari tabel partisi anak, Anda harus mengapit nama tabel partisi anak dalam sepasang tanda kutip ganda ("). Contoh:SELECT xxx FROM "tbl_2024_11_22".
Konfigurasikan pembagian partisi dinamis
Deskripsi sintaksis
Anda dapat mengonfigurasikan pembagian partisi dinamis untuk tabel partisi saat membuat tabel tersebut atau untuk tabel partisi yang sudah ada. Contoh kode berikut menunjukkan sintaksis:
Gunakan klausa WITH
Konfigurasikan properti pembagian partisi dinamis saat membuat tabel partisi.
-- Konfigurasikan properti pembagian partisi dinamis saat Anda 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', -- Hologres V2.2 atau yang lebih baru mendukung schd_start_time auto_partitioning_schd_start_time = 'xxx', -- Hologres V3.0.12 atau yang lebih baru mendukung time_format auto_partitioning_time_format = 'xxx' );Ubah properti pembagian partisi dinamis untuk tabel partisi yang sudah ada.
-- Ubah properti pembagian partisi dinamis untuk tabel partisi yang sudah ada. 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', -- Hologres V2.2 atau yang lebih baru mendukung schd_start_time auto_partitioning_schd_start_time = 'xxx', -- Hologres V3.0.12 atau yang lebih baru mendukung time_format auto_partitioning_time_format = 'xxx' );
Gunakan perintah CALL
Konfigurasikan properti pembagian partisi dinamis saat membuat tabel partisi.
-- Konfigurasikan properti pembagian partisi dinamis saat Anda 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_retention', 'xxx'); CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_hot', 'xxx'); -- Hologres V2.2 atau yang lebih baru mendukung schd_start_time CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.schd_start_time', 'xxx'); -- Hologres V3.0.12 atau yang lebih baru mendukung time_format CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx'); COMMIT;Ubah properti pembagian partisi dinamis untuk tabel partisi yang sudah ada.
-- Ubah properti pembagian partisi dinamis untuk tabel partisi yang sudah ada. 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'); -- Hologres V3.0.12 atau yang lebih baru mendukung time_format CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx');
Parameter
Sebelum mengeksekusi pernyataan CREATE TABLE WITH untuk mengonfigurasikan pembagian (partisi) dinamis, ganti titik (.) dalam nama parameter dengan garis bawah (_). Sebagai contoh, sebelum mengeksekusi pernyataan CREATE TABLE WITH, ganti auto_partitioning.enable menjadi auto_partitioning_enable.
Parameter | Diperlukan | Deskripsi | Dapat diubah | Versi yang didukung |
| Tidak | Menentukan apakah akan mengaktifkan pembagian partisi dinamis. Nilai valid:
| Ya | Hologres V1.3 atau yang lebih baru |
| Ya | Satuan waktu untuk pembagian partisi dinamis. Nilai valid:
Sebagai contoh, jika Anda mengatur parameter ini ke DAY, sistem secara otomatis membuat atau menghapus partisi per hari. | Tidak | |
| Tidak | Zona waktu untuk pembagian partisi dinamis. Jika Anda tidak mengonfigurasikan parameter ini, zona waktu tempat instans Hologres Anda berada akan digunakan. Jika Anda menentukan zona waktu, partisi dikelola secara dinamis berdasarkan zona waktu yang ditentukan. Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan nilai valid dari parameter ini. Zona waktu yang berbeda memiliki offset waktu yang berbeda. Nilai valid dari parameter ini ditampilkan di kolom name yang dikembalikan. Contoh: Asia/Shanghai. | Tidak | |
| Tidak | Jumlah partisi yang ingin Anda buat sebelumnya. Nilai valid:
Catatan Sebagai contoh, jika tanggal saat ini adalah 10 Januari 2022 dan Anda menentukan Penting Pembuatan partisi sebelumnya memengaruhi perilaku fungsi MAX_PT. Sebelum Anda mengonfigurasikan parameter ini, periksa apakah fungsi MAX_PT digunakan. | Ya | |
| Tidak | Jumlah partisi historis yang ingin Anda pertahankan. Nilai valid:
Anda dapat mengeksekusi pernyataan Catatan Sebagai contoh, jika tanggal saat ini adalah 10 Januari 2022 dan Anda menentukan | Ya | |
| Tidak | Jumlah partisi panas yang ingin Anda pertahankan. Nilai valid:
| Hologres V1.3.37 atau yang lebih baru | |
| Tidak | Waktu yang dijadwalkan untuk pembagian partisi dinamis. Jika Anda tidak mengonfigurasikan parameter ini dan Anda mengatur parameter Anda dapat mengubah waktu penjadwalan dengan menggunakan parameter ini. Untuk format tanggal dan waktu yang didukung, lihat Format waktu. Jika Anda menetapkan titik waktu di masa depan, konfigurasi akan berlaku ketika waktu yang ditentukan tiba. | Hologres V2.2 atau yang lebih baru | |
| Tidak | Format datetime kolom kunci partisi.
| Tidak | Hologres V3.0.12 atau yang lebih baru |
Konvensi penamaan untuk tabel partisi anak
Parameter auto_partitioning.time_unit untuk pembagian partisi dinamis dapat diatur ke HOUR, DAY, MONTH, QUARTER, atau YEAR. Nama tabel partisi anak yang dibuat secara otomatis dengan fitur ini terdiri dari nama tabel partisi induk dan akhiran waktu, dalam format {parent_table}_{time_suffix}. Akhiran waktu mengikuti format tertentu dan dihasilkan berdasarkan waktu yang dijadwalkan serta satuan waktu untuk pembagian partisi dinamis. Tabel berikut menjelaskan hubungan antara akhiran waktu dan waktu yang dijadwalkan.
Satuan waktu | Format akhiran waktu | Contoh nilai | Waktu yang dijadwalkan untuk pembagian partisi dinamis |
HOUR | YYYYMMDDHH24 | 2024112221 | Awal setiap jam, seperti 21:00:01 pada 22 November 2024 |
YYYY-MM-DD-HH24 | 2024-11-22-21 | ||
DAY | YYYYMMDD | 20241122 | 00:00:01 setiap hari, seperti 00:00:01 pada 22 November 2024 |
YYYY-MM-DD | 2024-11-22 | ||
MONTH | YYYYMM | 202411 | 00:00:01 pada hari pertama setiap bulan, seperti 00:00:01 pada 1 November 2024 |
YYYY-MM | 2024-11 | ||
QUARTER | YYYYQ | 20241, 20242, 20243 dan 20244, menunjukkan empat kuartal tahun 2024 | 00:00:01 pada hari pertama setiap kuartal, seperti 00:00:01 pada 1 Januari 2024 |
YYYY-Q | 2024-1, 2024-2, 2024-3 dan 2024-4, menunjukkan empat kuartal tahun 2024 | ||
YEAR | YYYY | 2023 dan 2024 | 00:00:01 pada hari pertama setiap tahun, seperti 00:00:01 pada 1 Januari 2023 |
Contoh
Pernyataan SQL berikut memberikan contoh cara mengonfigurasikan pembagian partisi dinamis dengan auto_partitioning.time_unit diatur ke DAY. Dalam contoh ini, partisi dibuat untuk tiga hari ke depan dan partisi historis untuk dua hari sebelumnya dipertahankan berdasarkan tanggal saat ini di zona waktu Asia/Shanghai.
Gunakan klausa WITH
Buat tabel partisi bernama
tbl1.-- Buat tabel partisi dan konfigurasikan pembagian partisi dinamis untuk tabel tersebut di Hologres V2.1. 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' );Masukkan data ke dalam partisi.
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');Kueri data.
SELECT * FROM tbl1 WHERE c2='20231212';Hasil berikut dikembalikan:
c1 c2 Data 1 20231212
Gunakan perintah CALL
Buat tabel partisi bernama
tbl1.-- Buat tabel partisi dan konfigurasikan pembagian partisi dinamis untuk tabel tersebut. 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;Masukkan data ke dalam partisi.
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');Kueri data.
SELECT * FROM tbl1 WHERE c2='20231212';Hasil berikut dikembalikan:
c1 c2 Data 1 20231212
Tabel berikut menjelaskan hasil eksekusi.
Waktu | Peristiwa | Hasil |
2023-12-12 09:00:00 | Pernyataan SQL dieksekusi untuk membuat tabel partisi induk dan tabel partisi anaknya. |
|
2023-12-13 00:00:00 | Sistem secara otomatis membuat tabel partisi anak. |
|
2023-12-14 00:00:00 | Sistem secara otomatis membuat tabel partisi anak. |
|
2023-12-15 00:00:00 | Sistem secara otomatis membuat tabel partisi anak dan menghapus tabel partisi anak lainnya. |
|
2023-12-16 00:00:00 | Sistem secara otomatis membuat tabel partisi anak dan menghapus tabel partisi anak lainnya. |
|
Skenario
Pertahankan tabel partisi anak
Secara default, sistem membuat dan menghapus tabel partisi anak berdasarkan konfigurasi pembagian partisi dinamis. Tabel partisi anak secara otomatis dihapus setelah kedaluwarsa. Namun, Anda mungkin ingin mempertahankan data penting dalam tabel partisi anak, seperti data e-commerce selama Double 11 untuk analisis year-on-year atau period-over-period. Dalam skenario seperti itu, Hologres memungkinkan Anda menambahkan properti keep_alive ke tabel partisi anak yang ingin Anda pertahankan untuk mencegah penghapusan otomatis.
Sintaksis yang didukung di Hologres V2.1 dan yang lebih baru:
-- Tambahkan properti keep_alive ke tabel partisi anak. ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'true'); -- Hapus properti keep_alive dari tabel partisi anak. Setelah Anda menghapus properti keep_alive, tabel partisi anak akan dihapus setelah tabel kedaluwarsa. ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'false');Sintaksis yang didukung di semua versi Hologres:
-- Tambahkan properti keep_alive ke tabel partisi anak. CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'true'); -- Hapus properti keep_alive dari tabel partisi anak. Setelah Anda menghapus properti keep_alive, tabel partisi anak akan dihapus setelah tabel kedaluwarsa. CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'false');
Kelola mode penyimpanan tabel partisi secara dinamis
Anda dapat mengaktifkan penyimpanan bertingkat untuk data panas dan dingin pada tabel partisi untuk mengurangi biaya dan mengoptimalkan kinerja kueri secara efisien. Misalnya, Anda dapat menyimpan data dalam N partisi historis sebelumnya yang sering diakses di tingkat penyimpanan panas, dan menyimpan data dalam M partisi yang dibuat lebih awal daripada N partisi di tingkat penyimpanan dingin. Hal ini membantu mengurangi biaya penyimpanan. Partisi yang dibuat lebih awal daripada partisi historis M dan N dihapus secara dinamis.
Buat tabel partisi dan konfigurasikan pembagian partisi dinamis untuk tabel tersebut
Dalam contoh ini, tabel partisi dengan pembagian partisi dinamis dibuat. Partisi dibuat untuk setiap hari. Data dalam 7 partisi historis sebelumnya disimpan di tingkat penyimpanan panas, dan data dalam 23 partisi historis yang dibuat lebih awal daripada 7 partisi disimpan di tingkat penyimpanan dingin. Partisi yang dibuat lebih awal daripada 30 partisi historis dihapus. Contoh kode:
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;Gambar berikut menunjukkan hasil konfigurasi.

Ubah kebijakan penyimpanan
Anda dapat menggunakan parameter auto_partitioning.num_hot untuk menentukan jumlah partisi di tingkat penyimpanan panas. Perhatikan bahwa Anda tidak dapat memigrasikan partisi dari tingkat penyimpanan dingin ke tingkat penyimpanan panas. Dalam contoh ini, tabel partisi dibuat pada 1 Juli 2022. Contoh kode:
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;Penyimpanan partisi dapat berubah dalam skenario berikut:
Skenario 1: Tingkatkan jumlah partisi di tingkat penyimpanan panas
Untuk meningkatkan jumlah partisi di tingkat penyimpanan panas menjadi 4, eksekusi pernyataan berikut:
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '4');Tabel partisi anak yang disimpan di tingkat penyimpanan dingin tidak dimigrasikan ke tingkat penyimpanan panas. Gambar berikut menunjukkan efek konfigurasi.

Skenario 2: Kurangi jumlah partisi di tingkat penyimpanan panas
Untuk mengurangi jumlah partisi di tingkat penyimpanan panas menjadi 2, eksekusi pernyataan berikut:
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '2');Tabel partisi anak yang disimpan di tingkat penyimpanan panas dimigrasikan ke tingkat penyimpanan dingin. Gambar berikut menunjukkan efek konfigurasi.

Konversikan tabel partisi yang menggunakan mode penyimpanan dingin menjadi tabel partisi yang memiliki partisi dinamis
Dalam contoh ini, tabel partisi yang menggunakan mode penyimpanan dingin dikonversi menjadi tabel partisi yang berisi partisi dinamis. Partisi yang dibuat dalam 7 hari terakhir disimpan di tingkat penyimpanan panas. Prosedur:
Siapkan data.
-- Buat tabel partisi dan atur mode penyimpanan tabel ke penyimpanan dingin. 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;Konversikan partisi tabel menjadi partisi dinamis dan simpan partisi yang dibuat dalam 7 hari terakhir di tingkat penyimpanan panas.
BEGIN; CALL set_table_property('tbl2', 'storage_mode', 'hot'); --Atur mode penyimpanan tabel partisi induk ke penyimpanan panas. CALL set_table_property('tbl2_20230810', 'storage_mode', 'cold'); --Atur mode penyimpanan partisi yang tidak memerlukan konversi mode penyimpanan ke penyimpanan dingin. 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;
Kueri konfigurasi pembagian partisi dinamis
Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan konfigurasi pembagian partisi dinamis untuk sebuah tabel di database.
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;Tabel berikut menjelaskan parameter dalam pernyataan tersebut.
Parameter | Deskripsi |
schema_name | Nama skema. |
table_name | Nama tabel. |
ENABLE | Menunjukkan apakah pembagian partisi dinamis diaktifkan. |
time_unit | Satuan waktu untuk pembagian partisi dinamis. |
time_zone | Zona waktu untuk pembagian partisi dinamis. |
num_precreate | Jumlah partisi yang akan dibuat sebelumnya. |
num_retention | Jumlah partisi historis yang akan dipertahankan. |
create_user | Pengguna yang digunakan untuk membuat tabel partisi. |
cret_time | Waktu ketika tabel partisi dibuat. |
schd_start_time | Titik waktu terdekat ketika pembagian partisi dijadwalkan. |
Gambar berikut menunjukkan hasil kueri.

Kueri log untuk membuat dan menghapus tabel partisi anak
Log untuk membuat dan menghapus tabel partisi anak tidak termasuk dalam log kueri. Anda dapat mengeksekusi pernyataan SQL berikut untuk menanyakan log untuk membuat dan menghapus tabel partisi anak:
SELECT
relname,
relowner,
schdtime,
trigtime,
status,
message,
precreate,
discard
FROM
hologres.hg_partitioning_log Tabel berikut menjelaskan parameter dalam pernyataan tersebut.
Parameter | Deskripsi |
relname | Nama tabel dalam format schema.table. |
relowner | Pemilik tabel partisi. |
schdtime | Waktu yang dijadwalkan untuk pembagian partisi dinamis. |
trigtime | Waktu aktual ketika pembagian partisi dinamis dilakukan. |
status | Status tugas pembagian partisi dinamis. |
message | Deskripsi. |
precreate | Nama tabel partisi anak yang dibuat. |
discard | Nama tabel partisi anak yang dihapus. |
Gambar berikut menunjukkan hasil kueri.

FAQ
Bagaimana cara mengaktifkan pembagian partisi dinamis untuk tabel partisi yang sudah ada?
Eksekusi pernyataan SQL berikut untuk mengaktifkan pembagian partisi dinamis untuk tabel partisi yang sudah ada.
-- Sintaksis di Hologres V2.1 dan yang lebih baru
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'
);
-- Sintaksis di 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 parameter inti dari fitur pembagian partisi dinamis. Anda hanya dapat mengonfigurasikan parameter ini sekali setelah instans Hologres ditingkatkan, dan nilai parameter tersebut tidak dapat diubah.
Jika saya mengaktifkan pembagian partisi dinamis untuk tabel partisi yang sudah ada, apakah tabel partisi anak yang sudah ada dihapus secara otomatis?
Hologres menentukan apakah akan menghapus tabel partisi anak berdasarkan nama tabel. Jika nama tabel partisi anak mengikuti aturan penamaan {parent_table}_{time_suffix}, tabel partisi anak dihapus secara otomatis setelah kedaluwarsa. Jika tidak, tabel partisi anak tidak dihapus secara otomatis.
Saya mengeksekusi pernyataan SQL untuk membuat tabel partisi dan mengonfigurasikan pembagian partisi dinamis untuk tabel tersebut dengan parameter num_precreate diatur ke 3. Namun, tabel partisi induk dibuat tetapi tidak ada tabel partisi anak yang dibuat. Mengapa?
Secara default, Hologres melakukan pemeriksaan setiap 10 menit pada tugas baru yang mana pembagian partisi dinamis dikonfigurasikan. Tabel partisi anak dibuat dalam waktu 10 menit. Anda dapat memeriksa tabel partisi anak nanti.