Table des matières
pgAdmin exploite la partition pgsql
Partition de stockage de données
Étendre (créer un script de partition par jour)
Modifier le nom de la base de données
Cloison
qu'est-ce que la partition
Fait référence à la division d'une grande table ou d'un index en plusieurs petites parties indépendantes, chaque partie est appelée une partition, afin de mieux gérer et traiter les données. Les partitions sont logiques et différentes partitions peuvent être physiquement stockées sur différents disques ou à différents emplacements sur le même disque. Le partitionnement de la base de données peut être effectué automatiquement par le système de gestion de la base de données sans fractionner manuellement les tables de données ou les index.
Par exemple : J'ai une table avec une grande quantité de données, avec des dizaines de millions de données par jour.Afin de faciliter la gestion, les statistiques et les requêtes, je peux créer des partitions par jour et mettre les données dans les partitions correspondant à l'heure Dans le cas de la création de partitions ci-dessous, il y aura mise en œuvre.
D'une manière générale, selon la stratégie de partition, les données sont réparties dans différentes sous-tables, et la relation d'association est établie via la table parent, de manière à réaliser la partition physique des données.
Avantages du partitionnement
Le partitionnement de base de données est un moyen technique pour gérer efficacement des données massives. Il peut améliorer les performances, la disponibilité et la maintenabilité de la base de données, et facilite grandement le développement et la maintenance de la base de données.
Après la table de partition, différentes tables peuvent être placées dans différents espaces physiques, de sorte que les données froides peuvent être placées sur des machines physiques bon marché et que les données chaudes peuvent être placées sur des machines aux performances élevées.
En termes de performances, l'efficacité de l'interrogation des données via la table parent de la table de partition est inférieure à celle des tables de données complètes ordinaires. L'interrogation des données dans une table directement partitionnée est plus efficace que l'interrogation des données dans une table complète.
Par rapport à la création d'une seule table sans partitionnement, je pense qu'il est plus pratique d'agréger les statistiques par partition.
pgAdmin exploite la partition pgsql
créer une table mère
trouver créer une table
Entrez le nom, ouvrez la partition (vous serez invité à spécifier la clé de la table de partition, ignorez-la)
Les attributs de la table d'écriture doivent contenir un champ de logique de partition, ici je partitionne par heure (date), (notez que l'index de la clé primaire ne peut pas apparaître, sinon une erreur sera signalée)
Rechercher des partitions, vous pouvez voir qu'il existe trois types de partitions ici, j'utilise la liste
- Partitionnement par plage : Une table est partitionnée en "plages" définies par des colonnes clés ou des ensembles de colonnes, sans chevauchement entre les plages de valeurs affectées aux différentes partitions. Par exemple : Le partitionnement peut être effectué par une plage de dates ou par une plage d'identificateurs pour un objet métier spécifique.
- Partitionnement de liste : partitionnez la table en répertoriant explicitement les valeurs de clé qui apparaissent dans chaque partition.
- Partition Hash (Hash) : (la stratégie HASH est fournie depuis PG11) pour partitionner la table en spécifiant le module et le reste pour chaque partition. Chaque partition contiendra des lignes et la division du hachage de la clé de partition par le module spécifié donnera le reste spécifié.
Il existe deux types de keyType : colonne et expression, je choisis la colonne
Règles de tri de classement (utilisées pour spécifier la méthode de tri des données de chaîne dans les colonnes du tableau) Je n'ai pas choisi
classe d'opérateur classe d'opérateur je n'ai pas choisi
La boîte de partitions ci-dessous permet de créer des partitions spécifiques. Ne les créons pas d'abord, mais créons d'abord la table parent.
Vous pouvez prévisualiser le sql, après tout, vous ne pouvez pas seulement utiliser pgadmin pour visualiser l'opération, enregistrer la fin
Créer une partition
Recherchez la table parent que vous venez de créer, ouvrez les propriétés et recherchez les partitions. En raison du type de liste que nous utilisons, spécifiez simplement le champ in
Après l'enregistrement, vous pouvez voir que la partition est apparue
Partition de stockage de données
cas très simple
Lors de l'insertion, vous devez spécifier votre colonne de partition. Par exemple, la partition que j'ai créée ci-dessus est in=230512, donc quand je veux insérer ou interroger cette partition, je dois porter la condition de colonne de partition=230512, et le reste sera laissé à la base de données pour votre logique. Insertion ou requête.
Étendre (créer un script de partition par jour)
En fait, lorsque nous créons une partition, cliquez sur la colonne sql à l'extrême droite, et nous avons déjà donné notre sql
Ensuite, combinez pgagent pour écrire des tâches de synchronisation, la méthode est la suivante
déclarer
currentDate varchar ;
BEGIN
SELECT INTO currentDate to_char(current_date+interval '1 d', 'yymmdd');
exécuter 'CREATE TABLE public.message'||currentDate||' PARTITION OF public.message FOR VALUES IN ('||currentDate||')' ;
renvoie la date actuelle ;
FIN;
Si vous ne connaissez pas pgagent, vous pouvez le rechercher et le consulter dans mon article
Modifier le nom de la base de données
Après avoir tout fini, le chef a soudainement dit que le nom de ma base de données n'était pas très bon, je fais directement un clic droit pour modifier le nom de la base de données et j'obtiens une erreur
C'est pourquoi, bien que l'option de modification soit clairement donnée, mais que la modification ne soit pas autorisée, n'est-ce pas de l'intimidation envers les honnêtes gens ?
En fait, c'est très simple d'y penser : si cette base de données est utilisée par d'autres et qu'il y a une connexion, que devez-vous faire si vous la modifiez ?
On va donc directement sur pgsql avec la ligne de commande et on trouve le pid de la connexion active dans la base de données
SELECT
pid,
usename,
application_name
FROM
pg_stat_activity
WHERE
datname = 'name';
Immédiatement après, nous avons directement déconnecté leurs connexions (n'osez pas jouer comme ça dans un environnement formel, utilisez-le avec prudence), et avons viré tous les pids
SELECT pg_terminate_backend(pid);
Enfin, exécutez l'instruction pour modifier le nom de la base de données
ALTER DATABASE test_db RENOMMER EN test_new_db ;