2010-03-16 3 views
2

J'ai une instance Postgres qui construit un index GIN. Il s'agit d'environ 200 000 lignes et cela prend environ 9 heures. Qui sait combien de temps cela prendra finalement? Le problème est qu'il utilise environ 2% de CPU quand je voudrais utiliser plus de 90%. Y a-t-il un moyen de le forcer à accélérer?Postgres n'utilise pas assez de CPU pendant la construction de l'index!

+0

Etes-vous sûr que les performances sont liées à l'UC? – jball

+0

Non je ne suis pas sûr. Je suis juste surpris par la quantité de CPU qu'il n'utilise pas. Un vidage de toute la table vient à 130 Mo. Il utilise 2.6% de CPU et 2.7% de RAM avec assez de chaque rechange. – Joe

+1

Avez-vous défini une quantité correcte de RAM pour maintenance_work_mem? Edit: Il n'y a pas de verrou bloquant la création de l'index? –

Répondre

2

Le goulot d'étranglement principal est probablement l'E/S du disque et non l'UC. Si vous êtes sur une machine Windows, vous pouvez vérifier les E/S disque en utilisant Process Explorer (freeware), si sous Unix, utilisez iostat, sar, DTrace (ne l'avez pas fait depuis un moment donc pas sûr à 100% du meilleur outil)

+0

Le Moniteur de ressources sous Windows affiche également ceci et vous pouvez généralement facilement voir si la machine est actuellement limitée par le CPU ou par IO. – Joey

+0

Merci! Je suis sur unix (Linux et Mac). Je vais jeter un coup d'oeil aux options. – Joe

+1

Je pense que c'était à cause de la pagination, ce qui a provoqué des débordements. La réponse a été d'augmenter la mémoire de travail par 'set maintenance_work_mem = 102400; – Joe

Questions connexes