Bonjour
Je crois savoir que lors de l'acces en modif (insert, update ou drop),
MySql verrouille "la table" concernée, toutes les autres requettes concernant cette table au meme moment , sont donc mises en attente, le temps de la mise a jour.
Le verrou dure qlq dixieme de secondes, celon la requette, puis le 1er arrivé sera le premier servi,pour les requettes qui attendent.
Ponctuellement nous avons des demandes de modif qui arrivent au meme moment pour les memes tables, ce qui se traduit par un temps d'attente "perceptible" par les utilisateurs.
Actuellement nous avons sommairement les tables suivantes
- Identité(Id_ident,Nom,Prenom,Sexe,DtNais)
- Contact(Id_contact,id_ident,adrs,tel,email)
- Article(Id_articl,id_ident,nbr)
si 5 articles differents sont commandés au meme moment, par 5 utilisateurs differents, le premier va faire patienter les 4 autres pour chaque table, puis le 2eme fera patienter les 3 autres,... Le Dernier aura donc du attendre 5 fois le laps de temps,avant que son navigateur lui rende la main.
Je me dit que si je créé une table par article du genre
- commande_article_AAA(id,nom,prenom,sexe,dtnais,adr s,tel,email,nbr)
quand le premier des 5 fera la mise a jour de la table, MySql ne verouillera que la table de la commande "AAA", l'utilisateur 2 s'il est sur la 2eme connexion, n'aura pas ca table "AAB" verouillée donc MySql ne le fera pas attendre. Le dernier n'aura donc quasiment pas attendu.
Ensuite j'aurai une tache Cron qui ferait le menage la nuit afin de mettre a jour "les vraies" tables identite,article,contact... .
Puis viderait les tables "articles_xxx".
Mon raisonnement est il valable ?
Le gain de temps sera t'il perceptible ?
Merci d'avance
Partager