Postgresql supprimer les anciennes lignes sur une base continue?
Je veux supprimer des lignes sur une de mes tables qui sont plus de 7 jours. Quelle est la meilleure façon de le faire? pour faire une tâche cron qui s'exécute tous les soirs ou PostgreSQL a construit en fonctionnalités pour faire quelque chose comme ça?
Est-il un timestamp dans la ligne?
les lignes n'ont d'horodatage
Pourquoi supprimer les données, pourquoi ne pas simplement des requêtes autour d'elle? Et si vous exécutez le travail de nuit, vous aurez presque l'âge de huit jours, juste avant l'exécution du travail - pourquoi ne pas exécuter toutes les heures, ou toutes les minutes?
Je pourrais interroger autour d'elle, mais les données ne seront pas utilisées de plus et il serait tout simplement de la taille de ma base de données et qu'il serait, faire des sauvegardes, des restaurations prendre plus de temps. J'allais courir tous les soirs depuis que je ne suis pas au courant de la façon dont beaucoup d'une chute des performances de mon serveur tout en faisant le supprime.
Envisager l'ajout de partitions pour la table en question (manuel) si la table est grande. Il vous permettra de supprimer les anciens enregistrements très rapide et d'éviter table de ballonnement.
les lignes n'ont d'horodatage
Pourquoi supprimer les données, pourquoi ne pas simplement des requêtes autour d'elle? Et si vous exécutez le travail de nuit, vous aurez presque l'âge de huit jours, juste avant l'exécution du travail - pourquoi ne pas exécuter toutes les heures, ou toutes les minutes?
Je pourrais interroger autour d'elle, mais les données ne seront pas utilisées de plus et il serait tout simplement de la taille de ma base de données et qu'il serait, faire des sauvegardes, des restaurations prendre plus de temps. J'allais courir tous les soirs depuis que je ne suis pas au courant de la façon dont beaucoup d'une chute des performances de mon serveur tout en faisant le supprime.
Envisager l'ajout de partitions pour la table en question (manuel) si la table est grande. Il vous permettra de supprimer les anciens enregistrements très rapide et d'éviter table de ballonnement.
OriginalL'auteur Arya | 2013-08-12
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur Clodoaldo Neto
La façon la plus simple (pour moi) pour programmer une base de travail est de créer une tâche cron, qui exécute un script SQL à l'aide de
psql
.Ici
vous pouvez lire surpsql
. Utilisation-f
ou-c
de passer les commandes SQL pourpsql
.Il peut aussi être plus facile d'écrire un fonctions PL/pgSQL, que fait votre travail et l'appeler à partir d'
psql
avecSELECT my_function();
OriginalL'auteur Igor Romanchenko
PostgreSQL n'a pas encore intégré dans cron-comme la fonctionnalité, donc je préfère utiliser le système de cron pour exécuter un adapté à supprimer la déclaration. Si vous disposez déjà d'un arbre d'index sur la colonne timestamp, vous pouvez exécuter le supprimer, beaucoup plus souvent que tous les soirs, en prenant de petits morceaux à la fois. Si vous n'avez pas l'index, puis en exécutant tous les soirs pendant les heures creuses serait mieux.
Si celles-ci n'ont pas les performances dont vous avez besoin, vous pouvez essayer de partitionnement. Mais je ferais ça comme un dernier recours, et non de "premier recours".
OriginalL'auteur jjanes