La fonctionnalité de partitionnement automatique de Hologres automatise la création et la gestion des partitions en fonction des règles que vous définissez pour une table partitionnée, éliminant ainsi le besoin d'une configuration préalable. Cette fonctionnalité déplace également les données éligibles vers le stockage froid, réduisant les coûts de stockage sans affecter les performances des requêtes.
Présentation
La fonctionnalité de partitionnement automatique a évolué au fil des différentes versions de Hologres :
Hologres V1.3 : introduction du partitionnement automatique, qui exécute périodiquement des tâches planifiées pour précréer et supprimer des partitions selon des règles définies par l'utilisateur.
Hologres V1.3.37 : ajout de la prise en charge du stockage hiérarchisé, qui archive automatiquement les données dans le stockage froid afin de réduire les coûts de stockage. Pour plus d'informations, consultez Stockage hiérarchisé.
À partir de Hologres V2.1.11, le partitionnement dynamique prend en charge le type Date comme clé de partition.
Hologres V2.2 : ajout de la propriété
schd_start_timeà la configuration du partitionnement automatique, qui vous permet de personnaliser la planification de la création, de la suppression et de l'archivage des partitions.Hologres V3.0.12 : ajout du paramètre
auto_partitioning_time_formatpour spécifier le format de date et d'heure de la clé de partition, ce qui vous permet de créer des partitions au format AAAA-MM-JJ.
Notes
-
Les données doivent être écrites dans une table enfant, et non directement dans la table parente.
Realtime Compute for Apache Flink peut écrire des données dans une table parente en temps réel. Pour plus de détails, consultez Écrire des données dans une table de destination Hologres partitionnée en temps réel .
Hologres prend uniquement en charge le partitionnement par liste (
PARTITION BY LIST).La clé de partition doit être une colonne unique.
Chaque règle de partitionnement ne peut servir à créer qu'une seule table partitionnée.
Si la table parente possède une clé primaire, la colonne de clé de partition doit faire partie de cette clé primaire.
Pour le partitionnement dynamique, l'heure de planification (
schd_start_time) s'applique uniquement à une table parente, et non à ses tables enfants.Le paramètre
auto_partitioning_time_formatest immuable. Vous pouvez le spécifier dans l'instruction CREATE TABLE lors de la création d'une nouvelle table, mais vous ne pouvez pas le modifier pour une table existante.Les noms des tables enfants suivent le format de date spécifié par le paramètre
auto_partitioning_time_format. Lorsque vous interrogez une table enfant, vous devez entourer son nom de guillemets doubles. Par exemple :SELECT xxx FROM "tbl_2024_11_22".
Configurer le partitionnement automatique
Syntaxe
Vous pouvez définir les propriétés de partitionnement automatique lors de la création d'une table partitionnée ou pour une table existante.
Utilisation de la clause WITH
-
Configurez les propriétés de partitionnement automatique lors de la création d'une table partitionnée.
-- Configure automatic partitioning properties when you create a partitioned table. 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', -- Note: The auto_partitioning_schd_start_time property is supported in Hologres V2.2 and later. auto_partitioning_schd_start_time = 'xxx', -- Note: The auto_partitioning_time_format property is supported in Hologres V3.0.12 and later. auto_partitioning_time_format = 'xxx' ); -
Modifiez les propriétés de partitionnement automatique d'une table partitionnée existante.
-- Modify automatic partitioning properties. 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', -- Note: The auto_partitioning_schd_start_time property is supported in Hologres V2.2 and later. auto_partitioning_schd_start_time = 'xxx', -- Note: The auto_partitioning_time_format property is supported in Hologres V3.0.12 and later. auto_partitioning_time_format = 'xxx' );
Utilisation de la commande CALL
-
Configurez les propriétés de partitionnement automatique lors de la création d'une table partitionnée.
-- Configure automatic partitioning properties when you create a partitioned table. 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'); -- Note: The auto_partitioning.schd_start_time property is supported in Hologres V2.2 and later. CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.schd_start_time', 'xxx'); -- Note: The auto_partitioning.time_format property is supported in Hologres V3.0.12 and later. CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx'); COMMIT; -
Modifiez les propriétés de partitionnement automatique d'une table partitionnée existante.
-- Modify automatic partitioning properties. 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'); -- Note: The auto_partitioning.time_format property is supported in Hologres V3.0.12 and later. CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx');
Paramètres
Lorsque vous utilisez la syntaxe CREATE TABLE WITH pour configurer le partitionnement automatique, vous devez remplacer les points (.) dans les noms de propriété par des traits de soulignement (_). Par exemple, changez auto_partitioning.enable en auto_partitioning_enable.
|
Paramètre |
Obligatoire |
Description |
Mise à jour possible |
Exigences de version |
|
|
Non |
Contrôle l'activation du partitionnement automatique. Valeurs valides :
|
Oui |
Hologres V1.3 et versions ultérieures |
|
|
Oui |
Spécifie l'unité de temps pour le partitionnement. Valeurs valides :
Par exemple, si vous définissez cette propriété sur |
Non |
|
|
|
Non |
Spécifie le fuseau horaire pour le partitionnement. La valeur par défaut correspond au fuseau horaire de la session actuelle. Après avoir configuré cette propriété, les partitions sont gérées en fonction du fuseau horaire spécifié. Vous pouvez exécuter l'instruction SQL suivante pour afficher les fuseaux horaires disponibles. La colonne
|
Non |
|
|
|
Non |
Spécifie le nombre de partitions à précréer. Valeurs valides :
Remarque
Par exemple, si la date actuelle est le 10/01/2022 et que vous définissez Important
La précréation de partitions affecte le comportement de la fonction MAX_PT. Avant d'utiliser cette propriété, vérifiez son impact sur toute application qui dépend de la fonction MAX_PT. |
Oui |
|
|
|
Non |
Spécifie le nombre de partitions historiques à conserver. Valeurs valides :
Vous pouvez exécuter Remarque
Par exemple, si la date actuelle est le 10/01/2022 et que |
Oui |
|
|
|
Non |
Spécifie le nombre de partitions chaudes à conserver. Les partitions chaudes sont celles stockées dans le stockage chaud. Valeurs valides :
|
Oui |
Hologres V1.3.37 et versions ultérieures |
|
|
Non |
Spécifie une heure personnalisée pour l'exécution de la tâche de partitionnement. Par défaut, cette tâche s'exécute au début de l'heure si Vous pouvez utiliser cette propriété pour modifier l'heure de planification. Pour obtenir des informations sur les formats pris en charge, consultez Formats d'heure. Si vous définissez une heure future, la planification prend effet à ce moment-là. |
Oui |
Hologres V2.2 et versions ultérieures |
|
|
Non |
Spécifie le format de chaîne de la valeur de la clé de partition.
|
Non |
Hologres V3.0.12 et versions ultérieures |
Règles de nommage des tables enfants
Lorsque vous définissez la propriété auto_partitioning.time_unit sur HOUR, DAY, MONTH, QUARTER ou YEAR, Hologres nomme les nouvelles tables enfants en ajoutant un suffixe temporel au nom de la table parente. Le format est {parent_table}_{time_suffix}. Le suffixe temporel est généré en fonction de la planification du partitionnement automatique et du modèle de format pour l'unité de temps spécifiée. Le tableau suivant décrit les correspondances.
|
Unité de temps |
Format du suffixe temporel |
Exemple de suffixe |
Heure de planification |
|
HOUR |
YYYYMMDDHH24 |
|
Au début de chaque heure. Exemple : 21:00:01 le 22 novembre 2024. |
|
YYYY-MM-DD-HH24 |
|
||
|
DAY |
YYYYMMDD |
|
À 00:00:01 chaque jour. Exemple : 00:00:01 le 22 novembre 2024. |
|
YYYY-MM-DD |
|
||
|
MONTH |
YYYYMM |
|
À 00:00:01 le premier jour de chaque mois. Exemple : 00:00:01 le 1er novembre 2024. |
|
YYYY-MM |
|
||
|
QUARTER |
YYYYQ |
|
À 00:00:01 le premier jour de chaque trimestre. Exemple : 00:00:01 le 1er janvier 2024. |
|
YYYY-Q |
|
||
|
YEAR |
YYYY |
|
À 00:00:01 le premier jour de chaque année. Exemple : 00:00:01 le 1er janvier 2023. |
Exemples
L'exemple suivant crée une table partitionnée par jour. Elle est configurée pour précréer les partitions des trois jours suivants, conserver les partitions historiques pendant deux jours et utiliser le fuseau horaire Asia/Shanghai.
Utilisation de la clause WITH
-
Créez la table partitionnée
tbl1.-- Create a partitioned table and configure automatic partitioning. 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' ); -
Insérez des données.
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'); -
Interrogez les données.
SELECT * FROM tbl1 WHERE c2='20231212';Le résultat suivant est renvoyé :
c1 c2 Data 1 20231212
Utilisation de la commande CALL
-
Créez la table partitionnée
tbl1.-- Create a partitioned table and configure automatic partitioning. 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; -
Insérez des données.
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'); -
Interrogez les données.
SELECT * FROM tbl1 WHERE c2='20231212';Le résultat suivant est renvoyé :
c1 c2 Data 1 20231212
Le tableau suivant décrit la logique de création et de suppression des partitions.
|
Heure |
Événement |
Résultat |
|
2023-12-12 09:00:00 |
Exécutez l'instruction SQL précédente pour créer la table partitionnée. |
|
|
2023-12-13 00:00:00 |
Le système crée automatiquement une table enfant. |
|
|
2023-12-14 00:00:00 |
Le système crée automatiquement une table enfant. |
|
|
2023-12-15 00:00:00 |
Le système crée automatiquement une table enfant et en supprime une ancienne. |
|
|
2023-12-16 00:00:00 |
Le système crée automatiquement une table enfant et en supprime une ancienne. |
|
Cas d'utilisation
Conserver des tables enfants spécifiques
Par défaut, Hologres crée et supprime automatiquement les tables enfants selon les règles de partitionnement automatique configurées, en supprimant celles qui ne sont plus dans la plage de conservation. Toutefois, dans certains scénarios, vous pouvez avoir besoin de conserver des données importantes, comme les données des festivals commerciaux annuels pour une analyse année sur année dans le secteur du e-commerce. Pour conserver des tables enfants spécifiques, définissez la propriété keep_alive pour ces tables. La syntaxe est la suivante.
-
Syntaxe pour Hologres V2.1 et versions ultérieures :
-- Retain a child table. ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'true'); -- Stop retaining a child table. After you remove this property, automatic partitioning immediately triggers a cleanup of expired data. ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'false'); -
Syntaxe pour toutes les versions :
-- Retain a child table. CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'true'); -- Stop retaining a child table. After you remove this property, automatic partitioning immediately triggers a cleanup of expired data. CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'false');RemarqueRemplacez
table_namepar le nom de la table enfant.
Gérer les niveaux de stockage pour les tables partitionnées
Lorsque vous gérez des tables partitionnées, le nivellement du stockage vous aide à équilibrer coût et performance. Par exemple, vous pouvez conserver les N dernières partitions historiques dans un stockage chaud pour des requêtes fréquentes, puis stocker les M partitions plus anciennes suivantes dans un stockage froid pour réduire les coûts. Combinée au partitionnement automatique, cette fonctionnalité vous permet de définir une politique pour supprimer automatiquement les données en dehors de la période de rétention N+M.
Créer une table partitionnée automatique
L'exemple suivant crée une table partitionnée par jour. La politique conserve les 7 derniers jours de partitions dans un stockage chaud et les 23 jours précédents dans un stockage froid. Les partitions âgées de plus de 30 jours sont automatiquement supprimées.
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;
Le résultat est illustré dans la figure suivante.

Modifier la politique de nivellement du stockage
Vous pouvez modifier la politique de stockage chaud des partitions en changeant la valeur du paramètre auto_partitioning.num_hot. Notez que si vous modifiez cette politique, Hologres ne déplace pas automatiquement les tables enfants déjà en stockage froid vers le stockage chaud. Supposons que la date actuelle soit le 1er juillet 2022 et que vous créiez la table partitionnée suivante.
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;
Cela peut entraîner les deux scénarios suivants pour la distribution des données :
-
Scénario 1 : Augmenter le nombre de partitions chaudes
Pour modifier la politique de partition chaude afin de conserver quatre partitions, exécutez le code suivant :
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '4');Étant donné que les tables enfants déjà en stockage froid ne sont pas automatiquement déplacées vers le stockage chaud, l'effet de la modification est illustré dans la figure suivante.

-
Scénario 2 : Diminuer le nombre de partitions chaudes
Si vous devez modifier la politique de partition chaude pour ne conserver que deux partitions, exécutez le code suivant :
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '2');Les tables enfants en stockage froid ne sont pas automatiquement déplacées vers le stockage chaud. Cependant, Hologres déplace les données qui correspondent désormais aux critères du stockage froid vers ce niveau de stockage. L'effet de la modification est illustré dans la figure suivante.

Convertir une table froide en table à partitionnement automatique
Pour convertir une table partitionnée du stockage froid vers une table à partitionnement automatique et déplacer les partitions des sept derniers jours vers le stockage chaud, suivez ces étapes.
-
Préparez les données.
-- Specify the cold storage tier when you create the table. 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; -
Convertissez la table en table à partitionnement automatique et définissez les partitions des sept derniers jours en stockage chaud.
BEGIN; CALL set_table_property('tbl2', 'storage_mode', 'hot'); -- Set the parent table to hot storage. CALL set_table_property('tbl2_20230810', 'storage_mode', 'cold'); -- Set the child tables that do not need to be moved to hot storage to cold storage. 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;
Afficher les configurations et planifications du partitionnement automatique
Pour interroger les informations et configurations des tables à partitionnement automatique dans la base de données actuelle, exécutez l'instruction SQL suivante.
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;
Le tableau suivant décrit les champs du résultat de la requête.
|
Paramètre |
Description |
|
schema_name |
Nom du schéma de la table. |
|
table_name |
Nom de la table. |
|
ENABLE |
Indique si le partitionnement automatique est activé. |
|
time_unit |
Unité de temps pour le partitionnement automatique. |
|
time_zone |
Fuseau horaire pour le partitionnement automatique. |
|
num_precreate |
Nombre de partitions précréées. |
|
num_retention |
Nombre de partitions historiques à conserver. |
|
create_user |
Utilisateur ayant créé la configuration. |
|
cret_time |
Heure de création de la configuration. |
|
schd_start_time |
Dernière heure de planification de la tâche de partitionnement. |
Le bloc de code suivant montre un exemple de résultat de requête.
schema_name | table_name | enable | time_unit | time_zone | num_precreate | num_retention | create_user | cret_time | schd_start_time | options
-------------+------------------------+--------+-----------+-----------+---------------+---------------+------------------+-----------------------------+--------------------------+---------
public | test_auto_part_daily | t | day | PRC | 4 | -1 | 1534141793071340 | 2022-04-01 11:45:33+08 | 2050-01-01 00:00:00+08 | {}
public | test_auto_part_hourly | t | hour | PRC | 4 | -1 | 1534141793071340 | 2022-04-01 11:44:39+08 | 2050-01-03 18:00:00+08 | {}
public | test_auto_part_weekly | t | week | PRC | 2 | 3 | 1534141793071340 | 2022-04-01 11:45:43+08 | 2050-01-03 00:00:00+08 | {}
public | test_auto_part_monthly | t | month | PRC | 1 | 0 | 1534141793071340 | 2022-04-01 11:45:55+08 | 2050-01-01 00:00:00+08 | {}
public | test_auto_part_quarterly | t | quarter | PRC | 2 | -1 | 1534141793071340 | 2022-04-01 11:46:09+08 | 2050-01-01 00:00:00+08 | {}
public | test_auto_part_yearly | t | year | PRC | 1 | -1 | 1534141793071340 | 2022-04-01 11:46:18+08 | 2050-01-01 00:00:00+08 | {}
(6 rows)
Afficher les journaux des tables enfants
Le journal des requêtes n'enregistre pas les journaux de création ou de purge des tables enfants. Vous pouvez exécuter l'instruction SQL suivante pour interroger ces journaux.
SELECT
relname,
relowner,
schdtime,
trigtime,
status,
message,
precreate,
discard
FROM
hologres.hg_partitioning_log
Le tableau suivant décrit les champs du résultat de la requête.
|
Paramètre |
Description |
|
relname |
Nom du schéma et de la table au format |
|
relowner |
Propriétaire de la table partitionnée. |
|
schdtime |
Heure planifiée. |
|
trigtime |
Heure de déclenchement réelle. |
|
status |
Statut. |
|
message |
Détails d'exécution ou messages d'erreur. |
|
precreate |
Noms des tables enfants créées. |
|
discard |
Noms des tables enfants purgées. |
Le bloc de code suivant montre un exemple de résultat de requête.
relname | relowner | schdtime | trigtime | status | message | precreate | discard
-----------+------------------+------------------------+------------------------+---------+---------+------------------------------+------------------
public.tbl1 | 1534141793071340 | 2022-04-01 11:00:00+08 | 2022-04-01 11:24:22+08 | SUCCESS | | {tbl1_2022032713,tbl1_2022032714} | {}
public.tbl2 | 1534141793071340 | 2022-04-01 12:00:00+08 | 2022-04-01 12:38:31+08 | SUCCESS | | {tbl2_2022040112} | {}
public.tbl2 | 1534141793071340 | 2022-04-01 13:00:00+08 | 2022-04-01 13:00:00+08 | SUCCESS | | {tbl2_2022040113} | {}
public.tbl2 | 1534141793071340 | 2022-04-01 14:00:00+08 | 2022-04-01 14:00:00+08 | SUCCESS | | {tbl2_2022040114} | {tbl2_2022040112}
(4 rows)
FAQ
Activer le partitionnement automatique pour les tables existantes
Pour activer le partitionnement automatique pour une table partitionnée existante, exécutez l'une des instructions SQL suivantes.
-- Example for Hologres V2.1 and later
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'
);
-- Example for all Hologres versions
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;
Les propriétés auto_partitioning.time_unit et auto_partitioning.time_zone sont des paramètres centraux du partitionnement automatique. Une fois définies, ces propriétés ne peuvent pas être modifiées.
Nettoyage automatique des tables enfants existantes
Le système détermine s'il faut supprimer une table enfant en fonction de son nom. Si le nom d'une table enfant correspond à la convention de nommage {parent_table}_{time_suffix}, elle est éligible au nettoyage. Sinon, elle n'est pas affectée.
Création différée des num_precreate tables enfants
Lorsque vous activez le partitionnement automatique pour une table pour la première fois, la tâche de création ne s'exécute pas instantanément. Le système vérifie les partitions à créer toutes les 10 minutes par défaut. Par conséquent, le système crée vos tables enfants dans cette fenêtre de 10 minutes.