|
Sujet : ******** Gestion des scripts PHP sous Apache ******** |
| kadreg |
ajnag a écrit a écrit :
te plains pas tu bosses sous mySQL y'en a qui bosse sur SQLserveur 7 ....
|
Y'en a qui bossent sous cloudscape :lol: |
| linux2000 |
Voici un bout de la doc MYSQL qui pourrait me servir et vous servir car je pense que ma question n'était pas bête...
MYSQL ne gère pas les transactions et ROLLBACK. Cela va changer dans les prochaines versions. Par contre on peut vérouiller les tables. Je n'y avais pas pensé.
7.23 LOCK TABLES/UNLOCK TABLES
LOCK TABLES Nom_table [AS alias] {READ | [LOW_PRIORITY] WRITE}
[, Nom_table {READ | [LOW_PRIORITY] WRITE} ...]
...
UNLOCK TABLES
LOCK TABLES verrouille une table dans le thread courant. UNLOCK TABLES ouvre tous les verrous posé par le thread courant. Toutes les tables verrouillé par un thread sont automatiquement déverrouillée quand le thread émet un autre LOCK TABLES, ou à la fin de la connexion au serveur.
Si un thread obtiens le verrou de lecture (READ) sur une table, le thread (et tous les autres threads) ne peut
que lire dans la table. Si un thread obtiens le verrou de lecture (READ) sur une table, le thread qui a le verrous
est le seul à pouvoir lire ou écrire dans la table.
Les autres threads attendent (sans limite) que le verrous se libère.
Le verrous d'écriture a une priorité supérieure au verrou de lecture, afin que les processus de mise à jour
puisse se faire dès que possible. Cela signifie que si un thread obtiens un verrou de lecture, et qu'un autre
thread obtiens un verrou d'écriture, alors le thread au verrou de lecture devra attendre la libération du verrou
d'écriture. Il est possible d'utiliser des verrous d'écriture de basse priorité (LOW_PRIORITY WRITE), mais il
faut être sur qu'il y aura un moment ou aucun thread ne sera en train de lire la table.
Lors de l'utilisation de la commande LOCK TABLES, il faut verrouiller toutes les tables qui vont être
utilisées. Si il y a des alias dans une requête, il faut aussi avoir les verrous pour les alias! Cette politique
assure que la table ne se verrouille jamais, sans pouvoir être déverrouillée.
Il ne faut jamais verrouiller une table qui va accepter une insertion reportée (INSERT DELAYED). Car, dans
ce cas, l'insertion sera faite dans un autre thread, qui n'aura pas le verrou.
Généralement, il n'y a pas besoin de verrouiller les tables, car les mise à jour UPDATE sont atomiques : aucun
autre thread ne peut interférer avec la commande en cours d'éxécution. Il y a toutes fois, quelques cas où il est
bon de verrouiller une table |