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

PL/SQL Oracle Discussion :

[9i] Lock de sequence, est-ce possible ?


Sujet :

PL/SQL Oracle

  1. #1
    Scorpi0
    Invité(e)
    Par défaut [9i] Lock de sequence, est-ce possible ?
    Bonjour,

    Me voilà devant un problème embêtant.
    Un code Pro*C gère une séquence de manière peu catholique.
    A un moment, il y a une mise à jour de la current value d'une séquence Oracle à faire. Le moyen utilisé est celui la :

    1- Calcul du delta à rajouter à la séquence
    2- Incrémentation du step de la séquence
    3- sélection de la nextval de la séquence
    4- ré initialisation du step à 1

    J'ai vu que ce genre de manip était conseillé sur certain forum pour mettre à jour la valeur d'une séquence (plus rapide que n fois un nextval).

    Certes, le problème étant que ce Pro*C est lancé plusieurs fois en même temps. A la fin, on se retrouve avec d'énorme saut de séquence, ce qui est à peine étonnant puisqu'il suffit qu'un des thread accède à la nextval pendant que la valeur du step est >1 pour avoir des sauts.

    Une solution à laquelle on peu penser est de locker la séquence le temps de l'incrémentation, mais j'ai peur que ce ne soit pas possible sous Oracle.

    La question : comment mettre à jour une séquence par un thread de manière sûre, c'est à dire sans s'exposer à des problème de concurrence, ni de saut de séquence ?


    Edit Delestage : bien que la question reste ouverte, mon problème n'était pas provoqué par la séquence, out donc ^^
    Dernière modification par Scorpi0 ; 18/08/2008 à 16h48.

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    en quoi un "saut" de séquence est un problème ???

  3. #3
    Scorpi0
    Invité(e)
    Par défaut
    Bonne question. Disons que le fait que ce soit problème est un axiome à ne pas remettre en question

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    si, parce que vous montez une usine à gaz pour contrer un problème qui n'en est pas un !!!!

    ce qu'il faut pour ne pas plomber les perfs, c'est utiliser le cache de la séquence ....

  5. #5
    Scorpi0
    Invité(e)
    Par défaut
    Je m'attendais à ce genre de remarque répondant à mon problème.. J'aurais du anticiper !!

    Pour le contexte donc, puisque apparemment, sans contexte je n'aurais pas de réponse, le code est un petit vieux, c'est de la maintenance, le re-développer n'est pas une option.

    L'idée est donc de trouver un moyen d'éviter d'avoir des séquences atteignant la limite des variables du code, des unsigned int, soit environ 4.10e9.

    Oui c'est une usine à gaz, c'est moche mais c'est la vie.

  6. #6
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    si votre traitement est concurrentiel, le mieux et le plus sûr, c'est la séquence.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/03/2010, 20h59
  2. [IRC] -> Est-ce possible avec JBuilder ?
    Par MaTHieU_ dans le forum JBuilder
    Réponses: 4
    Dernier message: 26/08/2003, 18h24
  3. Réponses: 3
    Dernier message: 29/07/2003, 10h38
  4. Réponses: 2
    Dernier message: 16/05/2003, 11h14
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 16h22

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