Cherche tut en fr sur les transactions avec MySql

Cherche tut en fr sur les transactions avec MySql - SQL/NoSQL - Programmation

Marsh Posté le 24-07-2002 à 18:31:24    

- Dans la doc MySql c'est pour utilisateurs avertis (= pas moi) et y'a pas grand chose, jsute 2 3 trucs sur COMMIT etc.
 
- G trouvé un tut en Anglais mais yé né rien compris !
 
--> Question dans le sujet...

Reply

Marsh Posté le 24-07-2002 à 18:31:24   

Reply

Marsh Posté le 25-07-2002 à 09:39:07    

Je sais pas si tu trouveras ton bonheur dedans mais tu as de nombreux tut en francais et anglais ici :
 http://www.developpez.com/sgbd/cours.htm
Enfin dans tous les cas pour la doc MySQL il faut que tu regardes du côté de InnoDB (ou Berkeley_db). Ce sont les seules types de table à supporter les transactions sous MySQL.

Reply

Marsh Posté le 25-07-2002 à 11:11:35    

Reply

Marsh Posté le 27-07-2002 à 21:29:25    

C'est pas très compliqué.
 
En gros tu encadres toutes tes opérations qui ont besoins d'être "protégées" par un BEGIN et un COMMIT à la fin. Si le script merde en cours de route, toutes les opérations jusqu'au BEGIN sont annulées automatiquement (tu ne te retrouve donc pas avec une transaction partielle). Si tu veux toi même annuler et que le COMMIT est pas encore fait, tu fais un ROLLBACK et ca annule tout (utile si une erreur est survenue en cours de transaction).

Reply

Marsh Posté le 28-07-2002 à 18:19:07    

C tout :ouch: !
 
Donc si j'ai 1 INSERT et 1 DELETE à faire et que je veux que soit les 2 soient faits soit qu'aucun ne soit fait je fais :

BEGIN;
INSERT ...;
DELETE ...;
COMMIT;

Et MySql s'occupe de tout (lock, roll back auto en cas d'erreur) ?


Message édité par Dost67 le 28-07-2002 à 18:19:28
Reply

Marsh Posté le 28-07-2002 à 18:22:22    

Dost67 a écrit a écrit :

C tout :ouch: !
 
Donc si j'ai 1 INSERT et 1 DELETE à faire et que je veux que soit les 2 soient faits soit qu'aucun ne soit fait je fais :

BEGIN;
INSERT ...;
DELETE ...;
COMMIT;

Et MySql s'occupe de tout (lock, roll back auto en cas d'erreur) ?




 
c'est le but !

Reply

Marsh Posté le 28-07-2002 à 23:48:18    

Tout à fait, y'a rien d'autre à faire. Tu as donc aussi l'option d'annuler toi même la transaction en cours de route avec l'instruction ROLLBACK. Il est effecté automatiquement si le script PHP meurt avant le COMMIT (ou si la connexion mysql est coupée, ou si la BD est crashée, etc.)

Reply

Marsh Posté le 29-07-2002 à 15:24:40    

Donc c'est exactement ce que je cherchais.
 
Mais une autre petite question. Pendant une transaction (entre le BEGIN et le COMMIT) est-ce que la table est lockée (en écriture, en lecture) ?
 
Et encore une autre question... Quel type de table (la + performante) : InnoDB ?


Message édité par Dost67 le 29-07-2002 à 15:25:14
Reply

Marsh Posté le 29-07-2002 à 16:23:47    

begin et commit, ça marche que sur innoDB ? et que avec MySQL Max ?


---------------
Ma réflexion sur cette affaire vient de connaître une avancée déterminante.
Reply

Marsh Posté le 29-07-2002 à 17:51:33    

Non la table n'est pas verouillée, uniquement les rangées (ou pages selon la base de donnée utilisée) qui sont concernées par les lectures/écritures. Ceci dit il suffit de lire la doc MySQL et/ou InnoDB, c'est expliqué dedans en détail.
 
Côté perf j'ai aucune idée si BDB ou InnoDB est plus performant. InnoDB a l'avantage d'etre supporté officiellement par MySQL alors que BDB ne sera plus amélioré. Par contre InnoDB est plus complexe à mettre en oeuvre (mais supporte aussi les FOREIGN KEY)

Reply

Marsh Posté le 29-07-2002 à 17:51:33   

Reply

Marsh Posté le 15-08-2002 à 06:54:00    

Snipe Foo a écrit a écrit :

begin et commit, ça marche que sur innoDB ? et que avec MySQL Max ?



innoDB et BDB je pense (gemini aussi pe, mais c'est plus supporté je crois)

Reply

Marsh Posté le 15-08-2002 à 06:54:43    

Betcour a écrit a écrit :

Non la table n'est pas verouillée, uniquement les rangées (ou pages selon la base de donnée utilisée) qui sont concernées par les lectures/écritures. Ceci dit il suffit de lire la doc MySQL et/ou InnoDB, c'est expliqué dedans en détail.
 
Côté perf j'ai aucune idée si BDB ou InnoDB est plus performant. InnoDB a l'avantage d'etre supporté officiellement par MySQL alors que BDB ne sera plus amélioré. Par contre InnoDB est plus complexe à mettre en oeuvre (mais supporte aussi les FOREIGN KEY)



plus complexe ?
je trouve carrement pas, y a rien à faire quasiement :)

Reply

Marsh Posté le 17-08-2002 à 18:09:00    

Je trouve que la gestion des fichiers data innodb complexifie quand même un peu les choses par rapport à MyISAM ou BDB.

Reply

Marsh Posté le 17-08-2002 à 18:21:45    

Betcour a écrit a écrit :

Je trouve que la gestion des fichiers data innodb complexifie quand même un peu les choses par rapport à MyISAM ou BDB.



je vois pas le problème, ils sont autoextensibles :??:


Message édité par joce le 17-08-2002 à 18:21:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed