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

DB2 Discussion :

Lock table DB2


Sujet :

DB2

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 76
    Points : 82
    Points
    82
    Par défaut Lock table DB2
    Bonjour,

    Je suis un débutant en DB2 et je me pose des questions sur la gestion des verrous de table sur DB2 :
    si une application 1 insére un enregistrement dans la table A mais ne fait pas le commit instantanément.
    si une application 2 insére un enregistrement dans la table A avant que l'application 1 ait fait le commit, l'insertion ne se fait pas ?

    Merci d'avance.

    Raphaël

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Points : 146
    Points
    146
    Par défaut
    Bonjour,

    Cela dépend. Lorsque tu fais une mise à jour, tu prends un lock sur une ressource qui en fonction du paramétrage (granularité) peut être la table, la page ou la ligne. Ce verrou ne sera libéré qu'au commit (explicite si codé, implicite si fin de la tâche ou autocommit). En général, le niveau page est un bon compromis. Donc dans ton cas et avec un verrouillage page, si tu inséres concuramment dans la même page, l'application 2 sera en attente que l'application 1 commite. Si la 1 ne commite pas et ne libére donc pas son verrou et incidemment la page, la 2 "timeoutera" au delà d'un temps prédéfini au paramétrage de ta base. Si les 2 applications insérent dans des pages différentes, pas de problème.

    Alex.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    Merci pour ta réponse.
    J'ai encore deux question :
    - c'est quoi le niveau page ?
    - comment changer le paramétrage 'granularité' ?

    Merci d'avance et bonne journée.

    Raphaël

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Points : 146
    Points
    146
    Par défaut
    Les données sont stockées logiquement dans des tables et des lignes/colonnes. Physiquement, elles sont dans des tablespaces découpés en extents/segments puis en pages et enfin les enregistrements/lignes de la tables. La granularité et le type dépend de la plateforme. Pour z/OS, elle se définit dans le create tablespace, pour LUW, dans le create table et le niveau page n'existe pas (row ou table). On peut modifier la granularité avec un alter.

    Alex.

    PS : sur ce forum, il faut toujours préciser la plateforme sur laquelle on travaille (LUW, zOS ou AS400).

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    En fait je travaille sous windows.

    Je viens de vérifier et ma table est en granularité 'ligne', donc si j'ai bien compris mon 2e insert ne devrait pas attendre le commit du premier insert car tous les 2 travaillent sur la même table mais pas sur la même row ?

    PS : ce n'est pas le cas, je suis bloqué

    Merci pour tout.

    Raphaël

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par alex. Voir le message
    ... Donc dans ton cas et avec un verrouillage page, si tu inséres concuramment dans la même page, l'application 2 sera en attente que l'application 1 commite. Si la 1 ne commite pas et ne libére donc pas son verrou et incidemment la page, la 2 "timeoutera" au delà d'un temps prédéfini au paramétrage de ta base. Si les 2 applications insérent dans des pages différentes, pas de problème.
    Moi j'aurais dit (en DB2 z/OS au moins ...) que si un processus a déjà inséré (l'instruction INSERT) dans une page donnée sans avoir encore fait un commit et qu'un second processus veut insérer dans la même table alors DB2 ne choisira pas la page verrouillée et, sans attendre que cette dernière se libère, ira insérer dans une autre page ...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Points : 146
    Points
    146
    Par défaut
    Effectivement, merci pour cette précision. En LUW, le niveau page pour le locking n'existant pas, le problème ne se pose pas.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    donc c'est normal ou pas que mon 2e insert soit bloqué ?

    Merci pour toutes vos réponses.

    Raphaël

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 123
    Points : 146
    Points
    146
    Par défaut
    Non, ce n'est pas normal. Tu devrais passer sans problème, si tu n'inséres qu'une ligne dans chaque application. Ton appli ne fait que ça ?

    Alex.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 76
    Points : 82
    Points
    82
    Par défaut
    Oui en fait pour mes tests :
    - j'insére une ligne dans la table A depuis un éditeur SQL (Toad) et je ne fais pas de Commit
    - j'insére une ligne dans la table B depuis une application PHP et là tant que je fais pas de commit sous Toad ma page reste bloquée.

    Merci d'avance.

    Raphaël

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

Discussions similaires

  1. Lock table
    Par amelie6 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/09/2011, 16h29
  2. PB lecture ou import table DB2 dans ACCESS
    Par Invité dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2006, 14h54
  3. Lock Table ?
    Par 000 dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/05/2006, 13h51
  4. Ordre de sélection des lignes sur une table DB2
    Par Pierre Formosa dans le forum DB2
    Réponses: 1
    Dernier message: 26/04/2006, 20h03
  5. LOCK TABLES et TRUNCATE TABLE
    Par killy-kun dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/08/2005, 15h52

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