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

SQL Oracle Discussion :

cache deconseillé ?


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut cache deconseillé ?
    Slt j'etudie actuellement les sequences en classe et le prof nous a recommandé d'eviter l'utilisation de l'option cache lorsqu'on cree une sequence et de les creer toujours avec l'option nocache sinon on peut perdre les données en cas de crash.
    Est ce que quelqu'un peut m'expliquer prq le cache est "dangereux" ?
    Merci beaucoup .
    ps:actuellement je ne peux pas contacter mon prof pour avoir une reponse .

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    En réalité ça dépend si tu peux avoir des trous ou pas dans tes ID. Si c'est pour une PK sans signification fonctionnelle le CACHE permet de mettre quelques valeurs en mémoire et évite donc les contentions sur la séquence. En revanche, les valeurs étant en mémoire, tu te doutes bien qu'elles sont perdues en cas de redémarrage de l'instance. Pour des numéros de factures c'est donc pas possible parce que les trous sont interdits

    Ton prof aurait dû être plus complet dans sa prévention

    Edit : quand je parle de trou, c'est dans la séquence bien sûr. Exemple avec un cache 5 :

    1
    2
    3
    7
    8
    9
    après la 3° valeur la base a été redémarré, la séquence continue donc à 7. A toi de voir si fonctionnellement cela pose problème ou pas.

  3. #3
    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
    Par défaut
    Le cache induit des "trous".
    La contre-partie, c'est de meilleures performances.

    Donc non, dire qu'il faut faire une séquence nocache est une CONNERIE !
    (tout comme dire qu'il faut faire une séquence avec un cache, d'ailleurs ! )

    [edit]
    j'avais fait le test avec une boucle de 10 000 loops qui interroge le nextval.
    Il faut 21 seconde pour une séquence nocache, moins d'une seconde avec un cache à 100)
    [/edit]

    [edit2]
    Pour compléter, je dirais qu'un cache non seulement introduit des trous dans la numérotation mais aussi peut entraîner une numérotation chronologique d'ordre non croissant
    [/edit2]

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    donc si j'ai bien compris si je cree une sequence a qui commence de 1 avec un cache de 10 et je consulte a.currval normalement je dois avoir 11 ?

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Non, currval doit être précédé de nextval obligatoirement. Et currval indique donc la valeur du dernier nexval de la session.

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    supposons que j'ai utilisé la sequence une fois ,normalement je dois avoir 11 lrsq je consulte seq.currval ?

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    NON !!! relis ce que j'ai écris et fait des essayes

  8. #8
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Faire une séquence sans cache ne garanti pas du tout le manque des trous, pensez aux transaction avec rollback
    Par contre je ne comprend pas pourquoi
    tout comme dire qu'il faut faire une séquence avec un cache, d'ailleurs
    Bon, il existe tant de situations mais j'aimerais avoir votre point de vue.

  9. #9
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    en effet, j'avais pas pensé à préciser ce cas... en fait pour avoir une séquence sans trou, je ne connais pas d'autre moyen que de maintenir une table des séquences

    ceci étant dit, en général il n'est pas interdit d'avoir des trous tant qu'on peut les justifier. Autant pour les rollbacks on peut imaginer une procédure qui permet de loguer les trous que dans le cas d'un cache perdu ça parait plus compliqué non ?

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

Discussions similaires

  1. le cache est deconseillé prq ?
    Par hunter99 dans le forum SQL
    Réponses: 3
    Dernier message: 07/11/2007, 09h33
  2. Répertoire caché
    Par KUBITUS dans le forum Delphi
    Réponses: 30
    Dernier message: 13/04/2007, 07h19
  3. Qu'est ce que le cache ?
    Par irrou dans le forum Assembleur
    Réponses: 4
    Dernier message: 24/11/2002, 23h28
  4. Ouvrir (fopen) un fichier caché
    Par shef dans le forum C
    Réponses: 2
    Dernier message: 09/09/2002, 09h06
  5. Webbrowser : Comment ne pas prendre la page en cache
    Par cedm78 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 30/08/2002, 11h17

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