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.
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.
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_partitionsurON.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
p1de la tablet1utilise 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
RANGEetLIST.Les opérations DML (y compris
INSERT,UPDATE,DELETEouLOAD) 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 |
| Global | Spécifie la règle d'interrogation des tables partitionnées hybrides. Valeurs valides :
|
| Global | Interrupteur de la fonction d'archivage automatique des données froides (DLM). Valeurs valides :
Remarque
|
| Global | Contrôle s'il est autorisé de créer ou d'archiver des tables partitionnées contenant des partitions non-InnoDB. Valeurs valides :
Remarque
|
| Global / Session | Contrôle si la gestion des métadonnées OSS (meta) est activée pour les tables OSS. Le paramètre
|
| 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
|
| 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 :
|
| 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 :
|
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>"}');
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 |
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_enabledsur 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_enabledsur 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);