PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Optimisation » Vacuum de la base = Vaccum de toutes les tables ? » 21/12/2016 12:27:41

Je réalise les opérations de VACUUM à un moment où il y a pas de sollicitations sur le serveur.

#2 Re : Optimisation » Vacuum de la base = Vaccum de toutes les tables ? » 21/12/2016 11:48:12

On réalise d'ors et déjà des VACUUM standards chaque jour sur les tables les plus sollicités.

Néanmoins, comme dit au début, certaines ont une très grande volatilité.

cause de transactions très longues.

Qu'entendez vous par transactions très longues ?

#3 Re : Optimisation » Vacuum de la base = Vaccum de toutes les tables ? » 21/12/2016 11:02:24

Merci pour les réponses.

Pour vous, il n'est pas nécessaire de réaliser un VACUUM full sur la base mais cela suffit sur les tables ?

Je vais regarder les paramétrages de l'autovacuum.

Lorsqu'on ne réalise pas de VACUUM full pendant plus de 3 semaines, nos bases saturent.

Qu'entendez-vous par saturer ?

On arrive à saturer l'espace mémoire des disques.

#4 Re : Optimisation » Vacuum de la base = Vaccum de toutes les tables ? » 21/12/2016 10:14:43

Bonjour,

Je me permets de relancer mon sujet.

Dans quel cas l'utilisation d'un VACUUM full est pertinent ?
Lorsqu'on ne réalise pas de VACUUM full pendant plus de 3 semaines, nos bases saturent. Ainsi, je pense que cette opération se justifie afin de libérer de l'espace mémoire. Néanmoins, est il possible de réaliser un VACUUM full uniquement sur les tables les plus sollicités ? En effet, en cas de fusion de nos bases, le temps de réalisation d'un VACUUM deviendra sans doute particulièrement trop long.

Merci de votre aide

#5 Re : Optimisation » Vacuum de la base = Vaccum de toutes les tables ? » 08/12/2016 11:29:17

Nous avons choisi de réaliser des VACUUM full sur la base complète après de nombreuses saturations de notre serveur.

En effet, la taille de plusieurs de nos tables présentent une important volatilité (facteur x10). Ces tables comportant plusieurs centaines de millions d'entrées, nous avons préférés réalisé des VACUUM full plutot que des VACUUM simple.

#6 Optimisation » Vacuum de la base = Vaccum de toutes les tables ? » 08/12/2016 10:56:17

Shaar
Réponses : 10

Bonjour

Je dispose actuellement de 9 bases de données que je souhaiterais fusionner par série de 3. Or cela signifie que je vais passer de 60 tables à environ une centaine avec une augmentation particulièrement conséquente de la taille de ma base complète (100Go à + de 200Go)

Nous réalisons actuellement des VACUUM full hebdomadaire sur chacune des bases + un vacuum full journalier sur les tables les plus sollicitées.

Si nous procédons à cette fusion de nos bases, je crains que l'opération de VACUUM full sur une base deviennent quasiment irréalisable dans un délai acceptable. Ainsi, je voudrais savoir si l'opération de VACUUM full réalisée sur chacune de mes tables équivaut à réaliser un vacuum full sur l'ensemble de ma base.

Merci !

#7 Re : Général » Différence entre taille de la base de donnée et somme des tables » 10/10/2016 15:09:10

Bonjour,

Réalisation à nouveau de la requete est 176 872 087 552. J'avais du supprimer les index à un moment pour voir leurs effets sur les bases.

Il semblerait que j'ai trop de fichier dans le repertoire non rattaché. Néanmoins comment, savoir lesquels puis je supprimer sans risque.

Après analyse, il semblerait qu'il y a eu une opération de VACUUM qui m'ai généré des fichiers supplémentaires qui n'ont pas été supprimé depuis car non rattaché à un seul objet.

Merci par avance

#8 Re : Général » Différence entre taille de la base de donnée et somme des tables » 28/09/2016 15:39:36

En faite, je n'avais pas lancé la requête sur la bonne base. Le résultat de SELECT sum(pg_total_relation_size(oid)) FROM pg_class; est  105 487 474 688

#10 Re : Général » Différence entre taille de la base de donnée et somme des tables » 27/09/2016 09:33:14

Pour le coup, j'ai réalisé les requetes :

 SELECT pg_database_size(oid) FROM pg_database WHERE datname='nom de la base'; 

--> 259 164 998 304

 SELECT sum(pg_table_size(oid)) FROM pg_class;

  --> 105 487 474 688

Soit un facteur de 2,5

#11 Re : Général » Différence entre taille de la base de donnée et somme des tables » 26/09/2016 15:52:09

Dans PgAdmin, en selectionnant une table :
Onglet Statistique
  Taille de la table TOAST : aucun

#12 Re : Général » Différence entre taille de la base de donnée et somme des tables » 26/09/2016 15:04:30

Bonjoru,

Merci de votre réponse. Tout d'abord, je n'ai pas d'élément TOASTE.

J'ai refait mes calculs en tenant compte des index et vues. Pourtant je continue à trouver un résultat différent entre somme des tables et taille de ma base. De plus, cette base à pour but de servir de test et contient donc moins de ligne que ma base de production. Or malgré un nombre de ligne inférieure, elle prend plus d'espace sur le disque.

Auriez vous une idée de comment réduire ma la taille de ma base de données ? J'ai lu pas mal de documentation et n'ai rien réussi à trouver qui me permettrait de gagner l'espace mémoire.

#13 Re : Général » Différence entre taille de la base de donnée et somme des tables » 23/09/2016 16:52:59

Pour calculer, j'utilise l'outil statistique fournit directement par PgAdmin.

Par ailleurs, j'ai executer la requête ci dessous pour connaitre le détail de chacune de mes tables
SELECT schemaname, tablename, tablespace, pg_size_pretty(taille) AS taille_table, pg_size_pretty(taille_totale) AS taille_totale_table
  FROM (SELECT *,
               pg_relation_size(schemaname || '.' || tablename) AS taille,
               pg_total_relation_size(schemaname || '.' || tablename) AS taille_totale
          FROM pg_tables) AS tables
ORDER BY taille_totale DESC;

Pour connaitre la taille de ma base complète, j'ai regardé l'onglet statistique dans PgAdmin, vérifier la taille prise par les tablespaces sur le disque (toutes mes tables sont sur une seule tablespace) et la requete
select pg_database_size('mabase');

Tout cela continue a entretenir la différence entre somme des tables et taille complète de ma base. Par ailleurs, le VACUUM full n'aurait pas du libérer l'espace mémoire ?

#14 Général » Différence entre taille de la base de donnée et somme des tables » 23/09/2016 10:34:07

Shaar
Réponses : 15

Bonjour,

Le titre est un peu long mais résume particulièrement bien le problème que je rencontre.

Lorsque je fait la somme de mes tables, j'obtiens un résultat autour de 100 Go. Pourtant, lorsque je regarde la taille de ma base de données, celle-ci fait plus de 250 Go.

Ainsi, il y a 150 Go que je n'arrive pas à récupérer. J'ai déjà réalisé pour l'ensemble de ma base de données depuis l'interface de PgAdmin III:
VACUUM
VACUUM FULL
ANALYZE
REINDEX

Malgré ces opérations, impossible de réduire la taille de ma base. Auriez une solution pour libérer cet espace mémoire ?

Merci par avance

#15 Re : Général » Tablespace : acces denied » 23/09/2016 10:29:20

Bonjour,
Désolé pour la réponse tardive.

Le problème provenait coté serveur qui refusait l'accès à l'utilisateur Postgresql aux fichiers tablspace. Une simple modification des droits a permis de corriger le problème

#16 Re : Général » Tablespace : acces denied » 09/09/2016 09:10:29

Bonjour,

J'ai essayé cette solution mais toujours le même problème...

#17 Général » Tablespace : acces denied » 08/09/2016 17:27:37

Shaar
Réponses : 4

Bonjour,
Suite à des anomalies au niveau de serveur contenant PostgreSql, nous l'avons reconfiguré et reconfigurer les disques virtuelles. Nous avions auparavant sauvegarder sur un disque temporaire l'ensemble des données du disques (dont les tablespaces). Après le reconfiguration et le reparamétrage des disques, nous avons restaurer les données sur le disque.

Les tablespace situées sur le disque principale (le C:) ne pose pas de problème et nous arrivons à nous connecter sans problème. Par contre, nous avons crée un second disque virtuel (le E:) qui semble avoir des connections avec Postgre.

Depuis ce changement, je ne peux plus accéder aux tables situés sur un des disques virtuels dû aux refus d’accéder aux tablespaces. En effet, le message d'erreur est toujours le même :
ERROR  : FATAL:  could not open file "pg_tblspc/18150/PG_9.4_201409291/19875/195082": Permission denied
(les chiffres évoluent selon ma BDD et la table recherché).

J'ai donné les droits aux utilisateurs pour accèder aux tablespaces, le firewall du serveur a été désactivé

L'erreur est permission denied.

Parfois, cela conduit à des interruptions de communication du serveur inexplicable :
ERROR  : server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request

Merci de votre aide,
Cordialement,
Simon

Pied de page des forums

Propulsé par FluxBB