Partitionnement de la table value_stream dans PostgreSQL
Lorsqu'une table value_stream contient un grand nombre de données, les requêtes temporelles et les opérations de purge peuvent prendre un temps considérable en raison des analyses de table qui en résultent et de l'augmentation de la charge globale du serveur. Le fait de disposer de partitions hebdomadaires ou mensuelles et d'opérations drop-partition correspondantes permettrait de minimiser certains de ces goulets d'étranglement actuels.
Pour l'ingestion de données à grande échelle, utilisez la ligne de commande partition_value_stream_by_range_setting pour partitionner la table value_stream afin de contrôler facilement les plages de partitionnement, par exemple quand démarrer ou arrêter le partitionnement et les intervalles de partitionnement. Cela inclut le repartitionnement d'anciennes données et la modification du début, de la fin ou de l'intervalle.
* 
A des fins de récupération, clonez ou sauvegardez la base de données avant de lancer le processus de partitionnement.
L'utilisation de la ligne de commande partition_value_stream_by_range_setting prend en charge les opérations suivantes :
1. L'ajout de nouvelles partitions à une table ou partition existante avec une durée d'immobilisation minimale.
2. Le repartitionnement d'anciennes données à partir d'une heure spécifique. Cela peut prendre un certain temps.
3. Le repartitionnement avec un paramètre de plage différent.
4. L'utilisation de la partition DEFAULT pour stocker les informations si les données n'appartiennent à aucune partition.
Pour partitionner votre table value_stream, créez des partitions périodiques. Utilisez l'outil planificateur de base de données pour vous assurer que toutes les futures données injectées entreront dans les partitions suivantes.
La ligne de commande partition_value_stream_by_range_setting comporte les paramètres suivants :
Nom de paramètre
Description
Valeur par défaut
Commentaire
hôte
Hôte de la base de données
Obligatoire
port
Port de la base de données
Obligatoire
database
Nom de la base de données dans laquelle se trouve la table value_stream
Obligatoire
username
Utilisateur de la base de données
Obligatoire
password
Mot de passe de la base de données
Obligatoire
partition_start_date
* 
Si les données fournies correspondent à des dates passées, cela peut entraîner des temps morts en fonction de la quantité de données à partitionner. Il est conseillé de commencer par exécuter cette opération dans un environnement de test et d'analyser les éventuelles durées d'immobilisation. Si partition_start_date est laissé vide, aucun temps mort n'aura lieu.
Définissez à partir de quel moment vous souhaitez créer des partitions. Le moment choisi peut être passé ou futur.
Dernière valeur de la colonne "time" dans la table value_stream. S'il n'y a aucune donnée, la date de début est égale à la date actuelle.
Facultatif
Formats possibles :
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.MS
partition_end_date
Définissez à partir de quel moment vous souhaitez arrêter la création de partitions.
Obligatoire
Formats possibles :
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.MS
Le moment choisi doit être dans le futur et être au moins supérieur à la dernière valeur de la colonne "time" plus l'intervalle. S'il n'y a aucune donnée, il doit être supérieur à la date actuelle + l'intervalle.
partition_interval
Intervalle obligatoire pour chaque partition
Formats possibles :
1h ou hours
1d ou 1day
1 month
1y ou 1year
future_data_exists
Facultatif
non
Valeurs possibles :
yes ou no
Si la valeur est yes (facultatif), le script prendra en charge le partitionnement des données à l'avenir
Après l'exécution de la ligne de commande, la table value_stream est partitionnée en fonction des paramètres et les données sont transmises à la partition correcte.
Pour utiliser la ligne de commande partition_value_stream_by_range_setting, procédez comme suit :
1. Rendez-vous sur le site de téléchargement de logiciels PTC, accédez au dossier ThingWorx PostgreSQL et téléchargez le scriptpartition_value_stream_by_range_setting.sh.
2. Copiez le script sur un serveur connecté à la base de données ThingWorx.
3. Ouvrez une ligne de commande et exécutez la commande comme vous le souhaitez à l'aide des paramètres ci-dessus.
Par exemple :/partition_value_stream_by_range_setting.sh -host localhost -port 5432 -database thingworx -username DBA -password password -partition_start_date '2024-06-17 00:00:00.000' -partition_end_date '2025-06-17 00:00:00.000' -partition_interval '1 months'
* 
Pour éviter de fournir plusieurs fois certains paramètres, vous pouvez modifier le script et pour y ajouter les paramètres suivants : DB_HOST, DB_PORT, DB_NAME, DB_USER DB_PASSWORD.
4. Conservez vos partitions. Par exemple, créez un planificateur pour ajouter les futures partitions et archiver ou supprimer les anciennes. Toutefois, un grand nombre de partitions peut augmenter considérablement le temps nécessaire à la planification des requêtes. Evitez donc d'utiliser plusieurs milliers de partitions.
Est-ce que cela a été utile ?