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

Python Discussion :

Optimisation bacth sur base de données [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier Avatar de Tchicken
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Août 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Août 2017
    Messages : 108
    Points : 85
    Points
    85
    Par défaut Optimisation bacth sur base de données
    Bonjour à tous,
    je boucle actuellement en VBA des millions de fois sur les enregistrements d'une base de données Access qui a une taille d'environ 1 Go, c'est très gourmand en temps de traitement (plusieurs jours)... Pour optimiser, j'utilise Miray Ram qui me permet de travailler sur une zone allouée dans la mémoire vive du PC, serait-il possible d'utiliser SQLite3 ou autre chose, un tableau... pour charger en mémoire ma base de données, afin d'optimiser les temps d'accès ?
    Merci à tous de votre aide.
    Cordialement, Tchicken

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Pas facile de répondre à ta question car il manque plein d'infos. Par exemple quelle est la taille d'une ligne de ta table (donc est-elle large ou longue) ? As-tu une seule table ou plusieurs liées en jointures ?

    Personnellement j'ai eu le cas de devoir traiter des dizaines de milliers d'infos (chaque ligne d'info faisait grosso-modo une centaine d'octets). Chaque ligne possèdait divers marqueurs qui étaient reportés dans une IHM afin que l'utilisateur puisse les désactiver (ou réactiver). Dans ce cas, les lignes associées devaient disparaitre (ou réapparaitre) et les lignes affichées devaient alors se recalculer en cumulant certaines infos les unes aux autres. Donc du gros traitement en permanence quoi.
    Ma première version était du 100% Python (un tableau). C'était super long. Ensuite j'ai déporté le traitement (surtout le recalcul en fait) dans Postgres (je débutais dans Python donc je ne connaissais pas tellement de trucs). Là ça a été nettement plus rapide. Ensuite, j'ai découvert sqlite et j'ai décidé de m'en servir pour mes traitements. Effectivement j'ai eu encore un gain nettement appréciable et j'en suis resté là (surtout que tu peux créer ta bdd sqlite en ram). Toutefois je pense ajourd'hui que numpy, si je le maitrisais bien, pourrait peut-être me faire encore gagner en performances.

    Donc voilà. C'est sûr que Python est un beau langage mais pour traiter plusieurs fois 1Go il vaut mieux le faire traiter par des outils extérieurs (que Python peut parfaitement interfacer) mais plus adaptés. Et aussi en dehors des pistes indiqués par mes essais, tu peux essayer de voir aussi du côté de "big data"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    On peut voir du côté de pyodbc peut-être ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Membre régulier Avatar de Tchicken
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Août 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Août 2017
    Messages : 108
    Points : 85
    Points
    85
    Par défaut
    Merci pour vos réponses messieurs,

    pour pyodbc j'ai peur que les temps de traitement ne change pas beaucoup par rapport à ce que je faisait déjà en vb avec odbc.
    Hier soir j'ai migré un extrait de ma BDD sous sqlite, le schéma est constitué de 6 tables, dont 3 sont en relation et toutes sont indexées. Cet extrait est complet et cohérent et ne fait que 71 Mo. Je vais tester en chargeant cette base en mémoire.

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Déjà tu peux tenter avec pyodbc, sinon il en existe d'autres, mais faut tester, comme par exemple adodbapi
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Questions sur l'optimisation d'une base de données
    Par gitney dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/03/2015, 11h46
  2. Réponses: 2
    Dernier message: 10/11/2005, 16h59
  3. Conseils developpement sur base de données
    Par koolkris dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 11h16
  4. optimisation requetes avec base de données
    Par flogreg dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 05/07/2005, 14h54
  5. Manipulation de XML sur base de données
    Par psyche dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 02/11/2004, 14h07

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