Partition de base de données ; opération pgAdmin partition pgsql ; modification du nom de la base de données pgsql

Table des matières

Cloison

qu'est-ce que la partition

Avantages du partitionnement

pgAdmin exploite la partition pgsql

créer une table mère

 Créer une partition

 Partition de stockage de données

Étendre (créer un script de partition par jour)

Modifier le nom de la base de données

 Lien


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 ;

 Lien

Tutoriel PostgreSQL (sjkjc.com)

Je suppose que tu aimes

Origine blog.csdn.net/wai_58934/article/details/130638117
conseillé
Classement