Skip site navigation (1) Skip section navigation (2)

Re: Test performance

From: "Service Informatique" <service(dot)informatique(at)2amath(dot)fr>
To: "Damien Griessinger" <dgriessinger(at)free(dot)fr>,<pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: Test performance
Date: 2005-12-06 16:26:23
Message-ID: 029401c5fa81$ccbde790$fd01a8c0@OlivierDucteil (view raw or flat)
Thread:
Lists: pgsql-fr-generale
Bonjour

Je viens d'apprendre un truc nouveau aujourd'hui grace à vous : j'ai enfin compris à quoi sert le COMMIT.
En lisant, "Un COMMIT tous les 1 000 enregistrements allèges la charges du serveur." j'ai cherché ceci dans la documenttaion :

Si vous faites beaucoup d'insertions (instruction INSERT), envisagez de les faire en une fois en utilisant la commande COPY. Ceci est plus rapide que des commandes INSERTS individuelles. Deuxièment, les requêtes qui ne sont pas dans des blocs de transaction BEGIN WORK/COMMIT sont considérés comme étant dans leur propre transaction. Envisagez de faire plusieurs instructions dans un seul bloc de transaction. Ceci réduira la surcharge apportée par les transactions. Aussi, envisagez d'abandonner et de recréer des index lors de grosses modifications de données.
(cf lien : http://www.postgresql.org/docs/faqs.FAQ_french.html)

Jutse une question : Ce qui signifie qu'il me faudrait détruire et recréer les index à chaque grosse requète d'insertion ? Est ce vrai uniquement pour postgresql ?

Cordialement
Ducteil Olivier 
  ----- Original Message ----- 
  From: Damien Griessinger 
  To: pgsql-fr-generale(at)postgresql(dot)org 
  Sent: Tuesday, December 06, 2005 4:57 PM
  Subject: Re: [pgsql-fr-generale] Test performance


  Bonjour,

   

  Votre SELECT va utiliser la méthode seq scan ( sequential scan ), ce qu'il vous faut, c'est un index, pour s'en convaincre, faite un EXPLAIN

   

  EXPLAIN select * from benchmark1 where key1 like '%"+GetRandomString(40)+"

   

  >> ca doit retourner quelque chose comme seq scan ......

   

   

  Pour créer l'index :

   

  CREATE INDEX idx_benchmark1_key2 ON benchmark1(key2);

   

  Et un petit 

   

  VACUUM ANALYZE benchmark1 ;

   

   

  Pour les insertions, ça doit être a cause d'une transaction, mettez un COMMIT de temps en temps, genre tous les 1000 enregistrements, pour alléger la charge.

   

   


  Cordialement,

  Damien Griessinger

   

   


------------------------------------------------------------------------------

  De : pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Pascal SERENT
  Envoyé : mardi 6 décembre 2005 14:45
  À : pgsql-fr-generale(at)postgresql(dot)org
  Objet : [pgsql-fr-generale] Test performance

   


  Bonjour à tous, 

  J'ai effectué un petit test de performance de PostgreSQL 8.1 qui est installé sur machine Windows. 
  Pour cela j'ai créé un table comme ceci : 

  CREATE TABLE benchmark1 
  ( 
    id int4 NOT NULL, 
    key1 varchar(50), 
    texte varchar(200), 
    CONSTRAINT benchmark1_pkey PRIMARY KEY (id) 
  ) 
  WITHOUT OIDS; 

  A l'aide d'un script j'ai inséré 1million d'enregistrement. 
  Deja lors de l'insertion j'ai remarqué des lenteurs lors de l'insertion (au bout d'un certain nombre, ca devient de plus en plus lent). 
  Mais bon l'insertion n'est pas critique pour moi, ce qui compte c'est la rapidité lors de la consultation. 

  Ensuite, j'effectue  une requete comme ceci : 

  select * from benchmark1 where key1 like '%"+GetRandomString(40)+" 

  Je mesure le temps de réponse et en moyenne (sur une centaine de requete) j'obtient 2,5 secondes pour avoir le résultat. 
  Cela me parait excessif ! 
  Qu'en pensez-vous ? 
  Est-ce que ma table est "faite" comme il faut ? 
  Que faudrait-il faire pour augmenter les performances ? 

  Merci d'avance de m'éclairer sur ce point. 

  Pascal 

  *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
  Pascal Serent
  BLM Technologies
  Ingénieur Développement Logiciel
  Tel : 03 28 33 11 11
  Mail : p(dot)serent(at)blm-technologies(dot)fr
  *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

  (Signature ajoutée par FELICEE)



------------------------------------------------------------------------------


  No virus found in this incoming message.
  Checked by AVG Free Edition.
  Version: 7.1.362 / Virus Database: 267.13.11/191 - Release Date: 02/12/2005

In response to

Responses

pgsql-fr-generale by date

Next:From: Pascal SERENTDate: 2005-12-06 16:46:19
Subject: RE [EXTERNE]Re: Test performance.
Previous:From: Jean-Max ReymondDate: 2005-12-06 16:02:41
Subject: Re: Test performance

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group