Tous les produits
Search
Centre de documentation

PolarDB:Créer une partition hybride

Dernière mise à jour :Sep 02, 2026

Créez une table partitionnée hybride pour accéder aux données stockées dans différents moteurs de stockage.

Le schéma suivant illustre le fonctionnement des partitions hybrides.

image

La partition hybride sépare les données chaudes et froides en stockant les partitions d'une table sur différents supports de stockage. Cette approche réduit les coûts de stockage des données froides sans affecter les performances des requêtes ni les opérations DML sur les données chaudes.

Remarque

Pour archiver une table partitionnée en tant que table partitionnée hybride, les conditions suivantes doivent être remplies :

  • MySQL 8.0.2 avec une version mineure 8.0.2.2.34.1 ou ultérieure. Définissez le paramètre loose_polar_allow_create_hybrid_partition sur ON.

  • MySQL 8.0.2 avec une version mineure antérieure à 8.0.2.2.34.1. Mettez à jour vers une version mineure plus récente.

Prérequis

  • Votre cluster doit exécuter PolarDB for MySQL 8.0.2 avec la version de révision 8.0.2.2.34.1 ou ultérieure. Consultez le numéro de version pour vérifier la version de votre cluster.

  • Les fichiers de données des partitions que vous souhaitez créer doivent déjà exister dans OSS, et leurs noms doivent respecter les règles suivantes :

    • Les extensions de fichier et les marqueurs de partition doivent être en majuscules.

    • Les noms des tables et des partitions doivent correspondre à ceux de la base de données.

    Par exemple, si la partition p1 de la table t1 utilise le moteur CSV, le fichier de données de la partition est nommé t1#P#p1.CSV.

  • Les tables partitionnées archivées via l'archivage des données froides peuvent être archivées en tant que tables partitionnées hybrides.

Limitations

  • Une table partitionnée hybride doit contenir au moins une partition utilisant le moteur de stockage InnoDB. Le moteur au niveau de la table doit être InnoDB.

  • Lorsque vous créez une table partitionnée hybride avec des sous-partitions, le moteur de la partition de premier niveau doit correspondre au moteur de la table, et au moins une sous-partition doit utiliser le moteur de stockage InnoDB.

  • Les tables partitionnées hybrides prennent uniquement en charge les types de partition RANGE et LIST .

  • Les opérations DML (y compris INSERT, UPDATE, DELETE ou LOAD) ne sont pas prises en charge sur les partitions OSS dans les tables partitionnées hybrides.

Paramètres

Lorsque vous utilisez des tables partitionnées hybrides, configurez les paramètres suivants sur la page Parameters de votre cluster PolarDB en fonction de vos besoins métier.

Paramètre

Niveau

Description

loose_hybrid_partition_query_mix_engine_enabled

Global

Spécifie la règle d'interrogation des tables partitionnées hybrides. Valeurs valides :

  • OFF (par défaut) : Lorsque vous interrogez une table partitionnée hybride, la requête couvre les partitions des moteurs InnoDB et X-Engine.

  • ON : Lorsque vous interrogez une table partitionnée hybride, la requête couvre les partitions des moteurs InnoDB, X-Engine et OSS.

loose_polar_dlm_storage_mode

Global

Interrupteur de la fonction d'archivage automatique des données froides (DLM). Valeurs valides :

  • OFF (par défaut) : Le stockage DLM est désactivé. Le planificateur ne démarre pas et aucune opération d'archivage n'est effectuée.

  • RO (non recommandé) : Le stockage DLM est en lecture seule. Les partitions de données froides archivées peuvent être interrogées, mais aucune nouvelle opération d'écriture d'archivage n'est effectuée. Cette valeur est rarement utilisée en production.

  • RW (recommandé) : Le stockage DLM est en lecture-écriture. Le planificateur démarre et prend en charge l'archivage automatique basé sur les politiques DLM, et les données archivées peuvent également être interrogées.

Remarque
  • Ce paramètre s'applique uniquement aux clusters MySQL 8.0.2 avec la version de révision 8.0.2.2.34.1 ou ultérieure.

  • Après avoir activé l'archivage des données froides, le système définit automatiquement ce paramètre sur RW. Aucune modification manuelle n'est requise.

  • Si vous utilisez uniquement le moteur haute compression X-Engine pour archiver les tables partitionnées (sans archivage des données froides OSS), vous devez définir manuellement ce paramètre sur RW pour activer la planification DLM.

loose_allow_create_hybrid_partition

Global

Contrôle s'il est autorisé de créer ou d'archiver des tables partitionnées contenant des partitions non-InnoDB. Valeurs valides :

  • OFF (par défaut) : La création de tables partitionnées contenant des partitions non-InnoDB est interdite. Toutes les partitions doivent utiliser le moteur InnoDB.

  • ON (recommandé) : La création de tables partitionnées contenant des partitions non-InnoDB est autorisée. Vous pouvez spécifier OSS (CSV/ORC) ou le moteur X-Engine au niveau de la partition.

Remarque
  • Ce paramètre s'applique uniquement aux clusters MySQL 8.0.2 avec la version de révision 8.0.2.2.34.1 ou ultérieure.

  • Après avoir activé l'archivage des données froides, le système peut définir automatiquement ce paramètre sur ON selon la version.

loose_use_oss_meta

Global / Session

Contrôle si la gestion des métadonnées OSS (meta) est activée pour les tables OSS. Le paramètre loose_csv_oss_file_filter dépend de ce paramètre. Valeurs valides :

  • ON : La gestion des métadonnées OSS est activée. Les informations meta sont écrites lors de la création ou de l'archivage des tables OSS. La liste des fichiers est ensuite récupérée en lisant les métadonnées, et la fonctionnalité de filtrage loose_csv_oss_file_filter est prise en charge.

  • OFF : La gestion des métadonnées OSS est désactivée. Aucune information meta n'est écrite. Les métadonnées sont obtenues en listant directement les fichiers OSS, et loose_csv_oss_file_filter n'est pas pris en charge.

loose_csv_oss_file_filter

Global / Session

Contrôle si le filtrage au niveau des fichiers (File Filter) est activé lors de l'interrogation des tables OSS. Cette fonctionnalité utilise les statistiques min/max et les filtres Bloom pour ignorer les fichiers de données non pertinents et réduire la quantité de données OSS analysées. Cette fonctionnalité nécessite que le paramètre loose_use_oss_meta soit activé. Valeurs valides :

  • OFF : Le filtrage des fichiers est désactivé. Tous les fichiers de données de la table OSS sont analysés lors des requêtes.

  • ON (recommandé) : Le filtrage des fichiers est activé. Lors des requêtes, loose_csv_oss_file_filter est utilisé avec les conditions WHERE pour améliorer les performances des requêtes.

dlm_prune_archiving_oss_partitions

Global / Session

Interrupteur pour l'élagage automatique des partitions OSS archivées par la fonction Data Lifecycle Management (DLM). Lorsque des opérations DML (UPDATE/DELETE) sont exécutées, le système élimine automatiquement les partitions en cours d'archivage vers OSS (ORC/CSV) et les partitions déjà archivées vers OSS. Cela empêche les opérations DML d'être bloquées par l'archivage et résout les conflits entre DML et DDL. Valeurs valides :

  • ON (par défaut, recommandé) : Les opérations DML (UPDATE/DELETE) éliminent automatiquement les partitions en cours d'archivage vers OSS.

  • OFF : Les opérations DML n'éliminent pas automatiquement les partitions en cours d'archivage vers OSS.

hybrid_partition_query_mix_engine_enabled

Global / Session

Interrupteur pour l'élagage automatique des requêtes. Lorsqu'une requête SELECT est exécutée, le système élimine automatiquement les partitions OSS (ORC/CSV) pour éviter les requêtes lentes causées par l'accès aux données froides. Valeurs valides :

  • OFF (par défaut, recommandé) : Les requêtes éliminent automatiquement les partitions OSS.

  • ON (non recommandé) : Les requêtes n'éliminent pas automatiquement les partitions OSS.

Créer une partition hybride

Pour créer une table partitionnée hybride, vous avez besoin d'un serveur OSS. Si vous n'en possédez pas, utilisez la syntaxe suivante pour le créer :

CREATE SERVER oss_server_name
FOREIGN DATA WRAPPER oss
OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
"oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
"oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');
Remarque

Si la version du cluster est PolarDB for MySQL 8.0.2 et que la version de révision est 8.0.2.2.6 ou ultérieure, le paramètre my_oss_sts_token est pris en charge.

Le tableau suivant décrit les paramètres.

Paramètre

Type

Description

oss_server_name

string

Le nom du serveur OSS.

Remarque

Ce paramètre est global et doit être unique. Le nom est insensible à la casse et peut comporter jusqu'à 64 caractères. Les noms dépassant 64 caractères sont tronqués. Vous pouvez spécifier le nom du serveur OSS sous forme de chaîne entre guillemets.

my_oss_endpoint

string

Le point de terminaison de la région OSS.

Remarque

Si vous accédez à la base de données depuis un hôte Alibaba Cloud, utilisez un point de terminaison interne pour éviter d'engendrer du trafic Internet. Un point de terminaison interne contient généralement le mot « internal ».

my_oss_bucket

string

Le bucket OSS contenant les fichiers de données. Ce bucket doit déjà exister dans OSS.

my_oss_access_key_id

string

L'AccessKey ID pour accéder à OSS.

my_oss_access_key_secret

string

L'AccessKey Secret pour accéder à OSS.

my_oss_prefix

string

Le préfixe de chemin pour les fichiers de données dans OSS. Cette valeur ne peut pas être vide ni contenir de caractères spéciaux.

my_oss_sts_token

string

Identifiants d'accès temporaires OSS. Pour plus de détails sur l'obtention des identifiants d'accès temporaires OSS, consultez Obtenir des identifiants d'accès temporaires.

Remarque

La valeur du paramètre my_oss_sts_token a une durée d'expiration par défaut. Si my_oss_sts_token a expiré, vous devez réinitialiser toutes les valeurs des paramètres dans EXTRA_SERVER_INFO à l'aide de la commande suivante.

ALTER SERVER server_name OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
    "oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
    "oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');

L'exemple suivant montre comment créer une table partitionnée hybride :

CREATE TABLE t2(a1 INT, a2 VARCHAR(30), a3 VARCHAR(256))
CONNECTION = "oss_server_name"
PARTITION BY RANGE(a1)
(
   PARTITION p1 values less than (1000) ENGINE = CSV,
   PARTITION p2 values less than (2000) ENGINE = CSV,
   PARTITION p3 values less than (3000) ENGINE = INNODB
);

Interroger une partition hybride

Vous pouvez interroger les partitions sur différents moteurs de stockage de trois manières :

  • Définissez le paramètre hybrid_partition_query_mix_engine_enabled sur ON. Les requêtes renvoient alors les données des partitions InnoDB, X-Engine et OSS. Exemple :

    -- t1 is a hybrid partitioned table.
    SELECT * FROM t1;
  • Définissez le paramètre hybrid_partition_query_mix_engine_enabled sur OFF. Les requêtes renvoient alors uniquement les données des partitions InnoDB et X-Engine. Exemple :

    -- t1 is a hybrid partitioned table.
    SELECT * FROM t1;
  • Interrogez une partition spécifique par son nom. Cela permet de récupérer les données de la partition spécifiée, quel que soit son moteur de stockage. Exemple :

    -- t1 is a hybrid partitioned table, and p1 is the name of the partition to query.
    SELECT * FROM t1 partition (p1);