Avant la version 0,10 de Hologres, les tables orientées colonne utilisaient l'ancien format Segment. À partir de la version 0,10, les nouvelles tables orientées colonne utilisent par défaut le format AliORC (orc), qui offre une meilleure compression des données et réduit les coûts de stockage. Les versions 1.3 et ultérieures de Hologres ne prennent plus en charge la création de tables au format Segment. Cette rubrique explique comment vérifier le format de stockage actuel de vos tables et migrer les tables existantes vers le format ORC.
Formats de stockage
Hologres stocke les données selon trois formats :
|
Format |
Type de table |
Description |
|
|
Orientée colonne |
Ancien format de fichier par colonne. Il s'agissait du format par défaut pour les tables orientées colonne dans les versions antérieures à la 0,10. La création de nouvelles tables avec ce format n'est plus prise en charge à partir de la version 1.3. |
|
|
Orientée colonne |
Format columnaire AliORC. Format par défaut pour les tables orientées colonne depuis la version 0,10. Il offre une meilleure compression des données et des coûts de stockage inférieurs à ceux du format |
|
|
Orientée ligne |
Format par défaut pour les tables orientées ligne. |
Vous ne pouvez pas convertir une table orientée colonne en table orientée ligne en modifiant simplement le format de stockage. Pour changer le type de table, vous devez créer une nouvelle table avec le schéma requis.
Prérequis
Avant de commencer, assurez-vous que :
Votre instance Hologres exécute la version 0,10 ou une version ultérieure. Vérifiez la version de votre instance sur la page des détails de l'instance dans la console Hologres. Si votre instance utilise une version antérieure à la 0,10, effectuez d'abord la mise à niveau. En cas d'erreur lors de la mise à niveau, consultez la section Erreurs courantes lors de la préparation de la mise à niveau ou obtenez une assistance en ligne.
-
Vous disposez d'une table Segment Hologres.
RemarquePour une table partitionnée, exécutez la commande uniquement sur la table parente.
Vérification du format de stockage
Exécutez l'instruction SQL suivante pour afficher le format de stockage de chaque table de la base de données actuelle :
SELECT *
FROM hologres.hg_table_properties
WHERE property_key = 'storage_format';
Exemple de résultat :
table_namespace | table_name | property_key | property_value
-----------------+--------------------+----------------+----------------
public | part | storage_format | segment
public | partsupp | storage_format | segment
public | customer | storage_format | segment
public | orders_row | storage_format | sst
public | sp_orders | storage_format | segment
public | sp_orders_20161231 | storage_format | segment
public | sp_orders_20171231 | storage_format | segment
public | sp_orders_20181231 | storage_format | segment
public | lineitem | storage_format | segment
public | nation | storage_format | orc
public | region | storage_format | orc
public | supplier | storage_format | orc
public | orders | storage_format | orc
(13 rows)
Les tables dont la valeur property_value est segment doivent être migrées vers le format ORC.
Conversion d'une table unique au format ORC
Après l'exécution de la commande, un processus d'arrière-plan convertit les données au format ORC de manière asynchrone. Ce processus consomme des ressources CPU, E/S et bande passante réseau, ce qui peut affecter les performances des services en ligne. Exécutez cette commande pendant les heures creuses.
Exécutez la commande suivante pour modifier le format de stockage d'une table :
call set_table_property ('table_name', 'storage_format', 'orc');
Remplacez table_name par le nom de votre table. L'exemple suivant convertit la table part :
call set_table_property ('public.part', 'storage_format', 'orc');
Conversion par lot des tables du format Segment vers le format ORC
Les versions 1.3.35 et ultérieures de Hologres prennent en charge la conversion par lot du format Segment vers le format ORC. Utilisez cette méthode lorsque vous devez migrer un grand nombre de tables Segment existantes.
La commande de conversion par lot s'exécute de manière asynchrone et consomme des ressources CPU et mémoire, ce qui peut affecter les charges de travail en ligne. Exécutez-la pendant les heures creuses.
Étape 1 : Identifiez les tables Segment dans la base de données actuelle.
select * from hologres.hg_table_properties
where property_key = 'storage_format' and property_value like '%segment%';
Si la requête renvoie un résultat vide, aucune table de la base de données actuelle ne nécessite de conversion.
Étape 2 : Démarrez la conversion par lot.
call hg_convert_segment_orc([<BATCH_SIZE>]);
Le paramètre BATCH_SIZE est facultatif. Il spécifie le nombre de tables à convertir simultanément. La valeur par défaut est 100.
La commande fonctionne comme suit :
Elle renvoie immédiatement un message de succès et démarre la conversion en arrière-plan.
Elle convertit jusqu'à
BATCH_SIZEtables simultanément par exécution.Elle consomme des ressources CPU et mémoire pendant la conversion. Surveillez ces métriques : une baisse de l'utilisation du processeur et de la mémoire indique que la conversion est terminée. La durée de la conversion varie généralement de quelques minutes à plusieurs heures, selon le volume de données.
Si la commande renvoie un résultat vide, toutes les tables de la base de données actuelle ont été converties ou sont en cours de conversion.
Si la commande renvoie le message
continue to call hg_convert_segment_orc() if you want to convert all tables in current database., il reste des tables Segment à convertir. Continuez à exécuter la commande jusqu'à ce qu'elle renvoie un résultat vide.
Répétez les étapes 1 et 2 pour chaque base de données de votre instance.
Conversion automatique lors de la création d'une table Segment (version 1.3.29 et ultérieures)
À partir de la version 1.3.29 de Hologres, si vous exécutez une instruction CREATE TABLE avec le format Segment, le système convertit automatiquement le format en ORC et affiche l'avis suivant :
NOTICE:storage format 'segment' is no longer supported,converted to 'orc'