[PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? (/showthread.php?tid=5939) Pages :
1
2
|
RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Myrina - 25-01-2012 Dans le sens ou je prévois que c'est un script Web qui initie le traitement qui sera exécuté en tâche de fond (fork), normalement, il ne devrait pas y avoir de restriction de temps du point de vue du serveur. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Sephi-Chan - 25-01-2012 Je ne sais pas. Au pire tu utilises un système de queue : tu en auras d'autres usages si ton application est un peu complexe. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Myrina - 27-01-2012 En explorant les différentes possibilités, j'ai trouvé que la commande LOAD DATA INFILE serait 20 fois plus rapide que la commande INSERT. :bave: Il faut modérer ce ratio par le cout supplémentaire d'écriture dans un fichier au lieu de stocker les différentes VALUES dans une variable (string ou array) avant l'appel de la commande MySQL. Mais avec le passage par un fichier, la question de limitation de la volumétrie disparait. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - php_addict - 27-01-2012 (27-01-2012, 12:46 PM)Myrina a écrit : En explorant les différentes possibilités, j'ai trouvé que la commande LOAD DATA INFILE serait 20 fois plus rapide que la commande INSERT. :bave: intéressant, si tu utilisera ceci, tu pourra nous dire si c'est vraiment plus rapide stp ? RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Myrina - 27-01-2012 Je viens de faire une petit bench: Citation :INSERT dans boucle :Alors, je n'ai pas lancé les 10 000 inserts individuels (sinon j'y serai encore demain...). J'aurai souhaité monter plus mais, pour une raison que je n'ai pas encore trouvé, ma boucle ne dépasse pas 16383 (2^14 -1). voici les sources des tests (fait sur un wamp): 1/ INSERT dans la boucle: Code PHP :
2/ INSERT à la fin Code PHP :
3/LOAD DATA INFILE: Code PHP :
avec comme table :
En recoupant une information fournie par Sephi-chan, l'utilisation d'un fichier puis de LOAD DATA INFILE ne serait justifiée par rapport à un INSERT à la fin que pour une volumétrie trop importante: dépassement du tampon RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Myrina - 27-01-2012 J'ai trouvé ma limitation à 16384 occurrences: c'est la fonction rand()! En passant avec : Code PHP :
Citation :INSERT après boucle :En fait, à 100 000 enregistrements insérés d'un coup, cela fait environ 4 millions de caractères pour la commande SQL donc plus que accepté par MySQL. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - php_addict - 27-01-2012 merci pour ce test, vraiment interessant RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Ter Rowan - 27-01-2012 Est ce que y a un équivalent pour les update (autre que par une requête unique qui croise les données d'autres tables via une formule) ? en tout cas c'est intéressant RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - php_addict - 27-01-2012 (27-01-2012, 05:44 PM)Ter Rowan a écrit : Est ce que y a un équivalent pour les update (autre que par une requête unique qui croise les données d'autres tables via une formule) ? lit le manuel: http://dev.mysql.com/doc/refman/5.0/fr/load-data.html il faut préciser REPLACE ou un truc du genre RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - jean-baptiste - 31-01-2012 C'est marrant je me suis confronté au même problème au boulot. Avec une échelle un peux plus importante. (1.000.000) Dans tout les cas le faire dans un boucle en individuel est toujours plus lent. Tout d'abbord il faut bien faire attention à sa structure de table, si tu peux éviter les autoincrements tu gagnes bien sur un peux de temps. De même si ta table est en myIsam. L'autre avantage de le faire par lot est de controler l'intégrité de tes données au fur et à mesure. Sinon si tu veux le faire via un fichier cela te permet de gagner bcp de temps( plus tu en as et plus tu gagnes du temps). J'avais des champs personnellement avec bcp de donnée j'avais générer un fichier de 700Mo. Je passais de 5 minutes via un fichier à 10aine de minute par lot de 5.000 insertions. Tout dépend si le temps d'insertion est une priorité pour toi. J-B |