7
votes

Postgres Tuning

Quels sont les moyens efficaces d'écrire des requêtes plus rapides spécifiquement à Postgres? Veuillez ne pas inclure généralement de bonnes pratiques de base de données (par exemple, les index d'utilisation ou la normalisation). Je cherche des astuces comme des tables dérivées fonctionnent plus rapidement que les sous-requêtes ou l'utilisation de fonctions Python String semble plus rapide que les fonctions de chaîne PGSQL. Idéalement, cette liste comprendrait des exemples et des conseils réels.

Merci.


0 commentaires

3 Réponses :


7
votes

Assurez-vous de sous-vide périodiquement. Le système AutoVacuum actuel fait un bon travail dans la plupart des cas dans la plupart des cas, mais il peut toujours être utile de faire fonctionner un vide manuel complet périodiquement (dans notre cas, cela se produit environ une fois par an).

Les index ne sont utilisés que de manière fiable si des statistiques sont disponibles pour la table. Assurez-vous qu'un vide --Analyze est exécuté après des modifications majeures à une table (tonnes d'inserts / suppresses) pour assurer que les index sont sélectionnés correctement.

La configuration Postgres par défaut est optimisée pour un système avec des ressources relativement modestes et des disques lents. Si votre système a des disques plus rapides (éventuellement), une CPU plus rapide (probablement) ou beaucoup plus de RAM (presque certainement), alors assurez-vous d'accorder les différents paramètres en fonction de cela. L'essentiel est d'augmenter la taille des tampons, mais si vous avez des disques extrêmement rapides (en particulier des SSDS), ce serait une bonne idée de réduire les estimations des coûts pour la recherche de fois.

J'ai également eu quelques expériences avec des jointures légèrement lentes dans des requêtes assez complexes, mais elles sont beaucoup plus difficiles à généraliser. Il est généralement préférable d'être plus explicites avec la requête que ce qui peut être nécessaire dans une DB avec un optimiseur de requête plus sophistiqué (par exemple, Oracle ou DB2).


1 commentaires

Oui, j'ai remarqué que l'aspirateur automatique ne fonctionne vraiment pas trop bien avec les systèmes qui ont des charges de données importantes quotidiennes. Nous avons au moins "analyser" quotidiennement.



8
votes

La seule règle incassable que j'ai trouvée jusqu'à présent est qu'il n'y a pas de règles incassables.

Parfois, la sous-requête est plus rapide, parfois rejoindre est plus rapide. Parfois, vous voulez PLPGSQL, parfois vous voulez d'autres pl /*.

Les conseils les plus adéquats les plus adéquats:

  1. Assurez-vous de l'aspirer et d'analyser (allumez AUTOVACUMUM)
  2. Utilisez Expliquer l'analyse et apprenez à lire sa sortie bien
  3. jouer avec la base de données. Essayez de faire les choses étranges. Habituellement - ça n'aide pas. Mais parfois, ça fait, et vous apprenez de nouvelles astuces.

0 commentaires

1
votes

Checkout Tous les liens de cette page, puisque vous faites le réglage réel, il est préférable que vous sachiez quelles sont toutes les options que signifient et quand l'une d'entre elles s'applique à votre configuration.

https://wiki.postgresql.org/wiki/performance_optimation


0 commentaires