[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
|
[PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Myrina - 25-01-2012 Je suis entrain de plancher sur une traitement en php qui pourra effectuer jusqu'à 100 000 INSERT ... VALUES (...) en base. Bien entendu, il est hors de question d'effectuer les 100 000 INSERT. D'un autre coté, je me vois mal préparé les 100 000 INSERT en php pour les envoyés en une fois via INSERT ... VALUES (...),(...),(...),... 100 000 parenthèses. Il parait évident qu'il faut regrouper les occurrences par un certain nombre avant des les insérer d'un coup, et ce, autant que necéssaire. Donc, j'aimerai savoir si vous avez déjà été confronté à une question de ce type et sur quel critère/principe le choix du facteur de regroupement a été établi? NB: l'ensemble des INSERT fait partie d'une même transaction. RE: [PHP/MySQL]Quel est le meilleur nombre d'INSERT simultanés? - niahoo - 25-01-2012 Ben tu fais un benchmark sur ta machine de production en commençant 1 par un pour aller jusqu'à 1000 par 1000 voire plus et tu prends la solution la plus rapide RE: [PHP/MySQL]Quel est le meilleur nombre d'INSERT simultanés? - Sephi-Chan - 25-01-2012 Es-tu sûr que tu as besoin de ces 100 000 lignes ? À quelle fréquence aurais-tu à le faire ? Est-ce que ça peut être fait en tâche de fond ? (25-01-2012, 04:22 PM)Myrina a écrit : Je suis entrain de plancher sur une traitement en php qui pourra effectuer jusqu'à 100 000 INSERT ... VALUES (...) en base. Pourquoi ? Si tu as besoin de créer 100 000 entrées, pourquoi ne pas le faire ? (25-01-2012, 04:22 PM)Myrina a écrit : D'un autre coté, je me vois mal préparé les 100 000 INSERT en php pour les envoyés en une fois via INSERT ... VALUES (...),(...),(...),... 100 000 parenthèses. Pourquoi ? Qu'est-ce qui te pose problème dans cette solution ? (25-01-2012, 04:22 PM)Myrina a écrit : Il parait évident qu'il faut regrouper les occurrences par un certain nombre avant des les insérer d'un coup, et ce, autant que necéssaire. Tu peux faire du traitement par lot : j'insère 10 000 lignes, je fais une pause de 1 seconde et je recommence. En somme on a besoin de plus d'informations concernant ton besoin pour répondre à ta question. RE: [PHP/MySQL]Quel est le meilleur nombre d'INSERT simultanés? - Myrina - 25-01-2012 (25-01-2012, 05:14 PM)Sephi-Chan a écrit : Es-tu sûr que tu as besoin de ces 100 000 lignes ?La fréquence est très rare (1 fois minimum et certainement moins de 10 fois) et les 100 000 enregistrements y seront certainement à chaque fois. Pourquoi ? Si tu as besoin de créer 100 000 entrées, pourquoi ne pas le faire ? (25-01-2012, 05:14 PM)Sephi-Chan a écrit :La taille (en octets) de la commande envoyée d'un coup à MySQL.(25-01-2012, 04:22 PM)Myrina a écrit : D'un autre coté, je me vois mal préparé les 100 000 INSERT en php pour les envoyés en une fois via INSERT ... VALUES (...),(...),(...),... 100 000 parenthèses. (25-01-2012, 05:14 PM)Sephi-Chan a écrit :C'est une possibilité que j'envisage et j'aurai voulu savoir si quelqu'un a déjà été confronté à cela afin d'avoir un retour d'expérience.(25-01-2012, 04:22 PM)Myrina a écrit : Il parait évident qu'il faut regrouper les occurrences par un certain nombre avant des les insérer d'un coup, et ce, autant que necéssaire. RE: [PHP/MySQL]Quel est le meilleur nombre d'INSERT simultanés? - Sephi-Chan - 25-01-2012 (25-01-2012, 05:57 PM)Myrina a écrit :(25-01-2012, 05:14 PM)Sephi-Chan a écrit :La taille (en octets) de la commande envoyée d'un coup à MySQL.(25-01-2012, 04:22 PM)Myrina a écrit : D'un autre coté, je me vois mal préparé les 100 000 INSERT en php pour les envoyés en une fois via INSERT ... VALUES (...),(...),(...),... 100 000 parenthèses. Qu'est-ce qui te fait peur à ce sujet ? Tu as de la documentation qui peut te laisser penser que ça ne va pas marcher ? RE: [PHP/MySQL]Quel est le meilleur nombre d'INSERT simultanés? - Myrina - 25-01-2012 (25-01-2012, 06:05 PM)Sephi-Chan a écrit : Qu'est-ce qui te fait peur à ce sujet ?Mon petit doigt (25-01-2012, 06:05 PM)Sephi-Chan a écrit : Tu as de la documentation qui peut te laisser penser que ça ne va pas marcher ?Aucune mais je pense qu'il doit bien exister une limite de taille sur une commande SQL. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Sephi-Chan - 25-01-2012 Sur MySQL, la taille maximum des paquets acceptés dépend de la directive max_allowed_packet . Cf. MySQL. Packet too largeIl faut voir selon les règles de ta base de données. Par défaut c'est 1Mo. Ça fait pas mal de texte. Essaye de peser la requête contenant les 100 000 insertions, histoire qu'on se fasse une idée. Si la question reste intéressante, je pense que tu ne devrais pas t'embêter avec tout ça. Autant opter pour des solutions simples et fonctionnelles quand elles font l'affaire. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Myrina - 25-01-2012 J'ai pas encore caler totalement le contenu, justement à cause de cette interrogation. Pour l'instant, j'ai des coordonnées cartésiennes X,Y entre 0 et peut être 9999, le Z étant une clé étrangère issu d'une autre table et une autre clé étrangère pour le type d'objet présent à cet endroit. A cela, se rajoute une code alphanumérique de 10c max synthétisant différemment les coordonnées spatiales et un champ libre pour contenir des métadonnées au format JSON. Donc, il faut que je trouve en équilibre entre la taille de mes métadonnées et le nombre de requêtes réellement envoyées tout en gardant un oeil sur le temps d'exécution globale pour avoir le plus court. Sinon, tu entends quoi par : Autant opter pour des solutions simples et fonctionnelles quand elles font l'affaire. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - Sephi-Chan - 25-01-2012 (25-01-2012, 07:36 PM)Myrina a écrit : Sinon, tu entends quoi par : Autant opter pour des solutions simples et fonctionnelles quand elles font l'affaire. Je veux dire qu'il ne faut pas se prendre la tête. Lancer 100 000 insertions individuelles, c'est très simple et ça fonctionne très bien. De toute façon, un tel script doit forcément être exécuté sous forme de background job, et pas dans un script lancé par le serveur Web. Partant de là, que ça prenne 15, 20 ou 30 secondes, ça ne change pas grand chose. RE: [PHP/MySQL] Quel est le meilleur nombre d'INSERT simultanés ? - niahoo - 25-01-2012 Ou même 10 minutes hein, tu t'en fous. |