IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Test Access Python Postgresql


Sujet :

PostgreSQL

Mode arborescent

Invité Test Access Python Postgresql 25/12/2006, 18h07
JeitEmgie drôle de syntaxe sql… et un... 26/12/2006, 11h52
Invité en vba il faut doubler les ""... 26/12/2006, 12h06
JeitEmgie #include <stdio.h> #include... 26/12/2006, 18h38
Invité je ne connais pas trop ce... 26/12/2006, 18h46
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    jnore
    Invité(e)
    Par défaut Test Access Python Postgresql
    Salut à tous,

    Avez-vous déjà essayé de compter le nombre d'insertion que PostgreSQL est apte à recevoir à la seconde?
    Pour ma part j'ai essayé avec Access et Python.

    J'ai crée une petite boucle qui va insérer 10000 fois mon nom dans un champ de table.
    Certes mon pc serveur n'est pas fortiche mais cela me permet de comparer les applications clientes.

    Mon serveur est équipé d'un sempron 2400 et de 512mo de ram. A noter que le disque dur est un disque de portable qui tourne à 4200trs/min (bref c pas le top)
    Mon réseau est constitué d'un routeur Netgear DG834G

    Voici le script en ADO( sous access)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Function testrapide()
    Dim cnx As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim cmd As New ADODB.Command
    Dim chaine As String
     
    chaine = "DRIVER={PostgreSQL ANSI};SERVER=u10791;port=5432;DATABASE=invest3;" _
    & " UID=postgres;PWD=blabla;A0=0;A1=6.4;A2=0;A3=0;A4=0;A5=0;A6=;A7=100;A8=4096;A9=0;" _
    & "B0=254;B1=8190;B2=0;B3=0;B4=1;B5=1;B6=0;B7=1;B8=0;B9=1;" & "C0=0;C1=0;C2=dd_"
     
    cnx.ConnectionString = chaine
    cnx.Open
    cmd.ActiveConnection = cnx.ConnectionString
     
    'définition de la requete
        Dim req As String
        req = "insert into commandes.""CONNECTION"" (nom) values ('JNO');commit"
     
    'définition des variable de temps
        Dim depart As Date
        Dim fin As Date
     
    cmd.CommandText = req
    'enregistrement de l'heure de départ
    depart = Now()
    ' séquence d'insertion des 10000
        For i = 1 To 10000
            Set rs = cmd.Execute
        Next
    'enregistrement de l'heure de fin
    fin = Now()
     
    MsgBox depart & "      " & fin
     
    cnx.Close
    Set cnx = Nothing
    Set cmd = Nothing
    Set rs = Nothing
     
    End Function
    Voici le script par odbc (j'utilise une requête programmée sous Access que je commande en VBA)Function rapide2()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Dim depart As Date
    Dim fin As Date
     
     
    'enregistrement de l'heure de départ
    depart = Now()
    ' séquence d'insertion des 10000
    DoCmd.SetWarnings False
    	For i = 1 To 10000
    	DoCmd.OpenQuery ("req")
    	Next
    DoCmd.SetWarnings True
    'enregistrement de l'heure de fin
    fin = Now()
     
    Debug.Print depart, " ", fin
    End Function
    Voici le script en python

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # -*- coding: cp1252 -*-
    import psycopg2
    import datetime
    db = psycopg2.connect("dbname='invest3' user='postgres' password='blabla' host='u10791' port='5432'")
     
    cursor = db.cursor()
    req= "insert into commandes."'"CONNECTION"'" (nom) values ('JNO');commit"
    a=1
    b=datetime.datetime.now()
     
    while a<=10000:
        cursor.execute(req)
        a=a+1
    c=datetime.datetime.now()
    print b,"     ",c
    A noter que j'ai fait un test aussi en convertissant le fichier access mdb en mde (code compilé);voici les résultats:

    secondes Moyenne Enr/s
    ODBC 95 105
    ADO(mdb) 47 212
    ADO(mde) 47 212
    Python 46 217
    Python compilé en exe 46 217

    Conclusion:
    Mon serveur est minable
    La faute n'est pas à Postgresql du moins je ne pense pas!
    J'ai testé en otant le réseau, c'est-à-dire en mettant les applications sur le pc serveur. Je gagne quelques secondes mais c'est pas extraordinaire.
    Je m'attendais à ce que Python fasse bcp mieux qu'access, en fait c'est identique.
    Autre chose, s'il faut éviter un mode de transfert de données, c'est bien ODBC. Certes la facilité est là mais bon…
    Quelqu'un a-t-il déjà essayé ce test?
    Quelle config faut-il pour passer à 1000 enregistrements par seconde?
    Quelles sont les limites de Postgresql? Ne dépend-il que du matériel qui le supporte?

    Merci pour vos commentaires.
    Dernière modification par jnore ; 07/01/2007 à 07h51.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/01/2008, 18h58
  2. [Python+PostgreSQl] lenteur de requêtes
    Par guestCam dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/08/2007, 13h41
  3. access et postgresql
    Par attavus dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 31/05/2006, 13h37
  4. migration de bases access vers postgresql
    Par passie dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 04/07/2005, 11h12
  5. Access et PostgreSQL
    Par nic_moq dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/03/2004, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo