|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Bonjour,
CONTEXTE Une table (myTable) contenant :
1 PC sous Windows Server 2003:
Fichier de configuration : Celle d'origine, puis en changeant suivant http://sitening.com/seo-tools/postgresql-benchmark/ en multipliant par 3/8 (c'est une config pour 8G de RAM) Probleme En lançant la commande "SELECT count(*) FROM myTable;", il se passe 8 minutes avant d'avoir une réponse. Ce qui me parrait enorme. D'autant plus que le CPU ne décole pas et le Disque Dur n'a pas l'air de réagir (DEL qui ne s'allume que tres rarement) J'ai exactement le meme temps de reponse sur les deux bécanes. Est-ce normal? Quoi faire dans le cas contraire? |
|
|
00
|
|
|
#2 |
|
Invité(e)
Messages : n/a ![]() |
8 minutes...Ca fait beaucoup !!!
C'est le temps que la lumière du soleil met pour atteindre la terre As-tu fait un vacuum sur ta base ainsi qu'un Reindex database? |
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
J'avais fait des vacuums (j'ai presque essayé toutes les options ^^)
Ca me prennait generalement une heure ou deux pour se finir. J'ai rajouté aussi un index sur la premiere colonne (create index). Le Reindex est en cours (mais il me semble que je l'avais deja fait) Pour 110 millions de ligne, quelle est l'ordre d'idée concernant le temps d'un count(*)? |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
En local, ma requete dure maintenant 4 minutes.
La deuxieme requête me ramene à 3 minutes. Il y a un utilitaire de surveillance intégré à windows Server qui me dit qu'il lit à 50Mb/s. En données brutes, 110 millions * 33 octets / 50 000 000 = 1.2 minutes En gros, c'est comme si il essayait de lire le double de données :/ |
|
|
00
|
|
|
#5 | ||
|
Invité(e)
Messages : n/a ![]() |
Si tu essaies de faire un count uniquement sur un champ indexé plutôt que sur tous les champs de la table, est-ce que cela n'est pas mieux?
Code :
|
||
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
J'ai 3 minutes d'execution.
Ma configuration (postgres.conf) : max_connections = 100 shared_buffers = 3750 temp_buffers = 10000 work_mem = 12288 maintenance_work_mem = 98304 max_stack_depth = 8192 max_fsm_pages = 393216 max_fsm_relations = 12288 vacuum_cost_delay = 50 wal_buffers = 24 checkpoint_segments = 6 effective_cache_size = 259753 log_destination = 'stderr' redirect_stderr = on log_line_prefix = '%t ' stats_start_collector = on stats_row_level = on autovacuum = on lc_messages = 'C' lc_monetary = 'C' lc_numeric = 'C' lc_time = 'C' |
|
|
00
|
|
|
#7 |
|
Invité(e)
Messages : n/a ![]() |
Pour essayer j'ai crée de mon coté une table avec 134 000 00 de lignes.
Un select count(*) se déroule en 25 minutes environ!!! A savoir que ma config est très modeste: Sempron 2600+ 512 mo de ram disque dur de 4200tr/min (disque dur de PC portable) A noter aussi que je n'ai indéxé aucun champ. Ce doit être normal visiblement !! |
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
J'ai posté sur le forum de postgres francais pour confirmeer cette lenteur...
Ca me parrait vraiment pas super ce binz |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com