Commit et types de SGBD

Commit et types de SGBD - SQL/NoSQL - Programmation

Marsh Posté le 08-10-2003 à 09:36:48    

Je voudrais savoir si les instructions :
 
START TRANSACTION;
ma requete...
...
COMMIT;
 
fait parti du langage SQL, c'est à dire si on peut l'utiliser sur SQL Server, PostgreSQL, MySql, Oracle, etc...
 
 
Merci

Reply

Marsh Posté le 08-10-2003 à 09:36:48   

Reply

Marsh Posté le 09-10-2003 à 12:05:54    

Si mes souvenirs sont bons, la norme c'est:
 begin transaction [transactionName]
 commit transaction [transactionName]
 rollback transaction [transactionName]
En tous cas ca marche sur SQLServer et Sybase.


---------------
Light is right
Reply

Marsh Posté le 09-10-2003 à 13:33:39    

Ouais, la syntaxe c'est BEGIN, pas START ;)
 
Sinon, la plupart des SGBD supportent les transactions toujours avec la même syntaxe.
Pour MySQL, il me semble que ce n'est pas supporté par défaut. Il faut un type de table particulier, et installer un module il me semble, mais j'en sais pas plus, je n'ai jamais essayé. Avec les dernières versions c'est peut-être intégré d'office.
 
Sinon, la différence au niveau du support des transations se situe au niveau de la gestion avancées de transactions.
 
En effet, SQL Server par exemple supporte des sous-transaction, avec possibilité de commiter ou rollbacker un nouveau ou plusieurs de transaction, sans impacter la transaction générale.
 
Avec Oracle, la solution adoptée est différente. Ca marche avec des CHECKPOINT. C'est à dire qu'au sein d'une même transaction, on peut décider de rollbacker jusqu'à un checkpoint défini.
 
Mais pour le fonctionnement basique des transations, c'est pareil pour tous les SGBD.
 
La seule différence se situe au niveau des lock engendrés par les transactions.
 
SQL Server va locker toute la table tant que la transaction n'est pas terminée.
 
Oracle va tenter de faire du versionning au niveau des lignes, puis des locks au niveau des lignes uniquement, ce qui permet une meilleure montée en charge en cas de transactions intensives.
 
Pour MySQL je ne sais pas quel type de lock est utilisé.
Mais de toute façon, c'est transparent pour l'utilisateur, la seule différence sera au niveau des performances et des risques de timeout plus ou moins importants en cas de transactions intensives et parallèles.
 
Sinon, au niveau d'ODBC quand on utilise ODBC, il y a aussi une gestion des transactions qui fait abstraction du support, et qui il me semble permet de faire des transaction imbriquée dans tous les cas (à confirmer, en tout cas ça marche même dans Access qui n'est pas transactionnel)

Reply

Marsh Posté le 09-10-2003 à 13:38:29    

pour MySQL: supporté optionnellement dans la version 3.23 (il suffit de modifier my.ini) et par défaut dans la version 4. Le type de table est InnoDB (lequel supporte également les contraintes de foreign keys, clés étrangères).
Pour le locking, c'est la table qui est verrouillée, non l'enregistrement.


Message édité par drasche le 09-10-2003 à 13:38:48
Reply

Sujets relatifs:

Leave a Replay

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