IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres SGBD Discussion :

Question sur les accés concurrents


Sujet :

Autres SGBD

  1. #1
    Membre habitué Avatar de bannik
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2003
    Messages : 191
    Points : 192
    Points
    192
    Par défaut Question sur les accés concurrents
    Bonjour,

    juste pour mon information:

    Je me pose une question au sujet d'acces concurrents pour les bases oracle et mysql.

    Je prend pour example l'auto increment.
    pour oracle, on créé une séquence, puis un trigger sur le insert.

    A chaque insertion, un .nextval est utilisé pour avoir un numéro unique. Ce nextval a pour etffet d'incrémenter automatiquement la séquence quelque soit le resultat de l'insert, arretez moi si je me trompe.

    Imaginons deux process A et B, pour chaque process, deux étapes trigger puis insert

    Comment cela peut-il se passer sous oracle?
    Est-ce qu'il est possible que le process B intervienne apres le trigger A mais avant l'insert A?
    Dans ce cas, le nextval (qui incrémente tout de suite la séquence) permet de gérer les conflits sur le numéro unique.
    C'est ce fonctionnement qui permet de ne pas 'bloquer' les inserts du process B dans le cas ou celui du process A prendrait plus de temp.
    Cependant, en cas d'erreur sur l'insert du process A, un numéro unique sera 'perdu'.

    Qu'en est-il de l'autoincrément sous MySql?
    Quelles sont les actions cachée derriere?
    J'ai remarqué que meme en cas d'erreur sur le select, il n'y a pas de numéro unique perdu.
    Mais dans le cas ou un process prend du temp, les autres sont-ils bloqués?


    merci

  2. #2
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Sur Oracle, plusieurs sessions concurrentes qui insèrent des lignes via trigger qui appelle une séquence accèdent toutes au final à la même séquence, donc il se peut que si 2 sessions A et B insèrent chacune 2 lignes en même temps, la session A insère les id 1 et 3, alors que la session B insère les id 2 et 4. Toutes les sessions concurrentes accèdent simultanément à la même séquence, donc impossible d'avoir des doublons
    Sur MySQL par contre je ne connais pas bien mais à mon avis ça doit petre similaire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/10/2008, 14h14
  2. question sur les vertex buffer et index buffer
    Par airseb dans le forum DirectX
    Réponses: 9
    Dernier message: 25/08/2003, 02h38
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo