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

Administration Oracle Discussion :

Calcul du DBA pour un Full Table Scan? [11gR2]


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut Calcul du DBA pour un Full Table Scan?
    Bonjour tout le monde,

    J'ai compris qu'Oracle, lorsqu'il veut lire un bloc de données, vérifie d'abord si celui-ci est dans le database buffer cache avant de le lire sur disque dur (c'est beaucoup plus long dans ce cas). Dans le cas d'un plan d'exécution utilisant un index, on calcule le DBA (Data Block Adress) via les infos du rowid obtenus dans cet index.
    MAIS si le plan d'exécution retenu par le CBO est un FULL TABLE SCAN, comment Oracle peut-il faire cette vérification puisqu'il n'a pas de rowid à sa disposition et donc ne peut pas calculer de DBA?

    Merci pour vos réponses.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Les lignes des tables ont bien des rowid :
    https://docs.oracle.com/cd/B19306_01...columns008.htm

  3. #3
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Merci pour ta réponse Waldar mais cela ne me satisfait pas.

    Les ROWID sont au niveau des rows donc il faut lire les data blocs pour avoir ces rowid. Ensuite avec ces rowid je peux calculer le DBA et vérifier si ce bloc est en mémoire MAIS à quoi bon puisque j'ai déjà lu le bloc sur disque dur donc pas la peine de savoir si le bloc est dans la SGA ?

    Ce qui serait intéressant ce serait si Oracle faisait une lecture SEULEMENT des ROWID pour chaque rows, qu'il puisse obtenir ces ROWID sans lire les data blocs en entier (comment?). Et dans ce cas là je comprends car avec ces rowid il peut vite définir où lire le bloc : en SGA ou sur disque dur. Mais on est bien d'accord pour dire que si on n'utilise pas d'index ET si Oracle, lors d'un FULL TABLE SCAN, cherche si les data blocs de la table sont en mémoire avant de les lire sur disque dur, je ne vois toujours pas comment il fait.

  4. #4
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Pour un Full Table Scan oracle a les addresses des extents (blocs contigus) et le high water mark à partir du le segment header, et va donc lire ces plages de blocs du premier au dernier.
    Cordialement,
    Franck,

  5. #5
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Bonjour Pachot,

    Sauf erreur de ma part, ce n'était pas ma question
    Ma question n'est pas comment Oracle fait un Full Table Scan mais comment Oracle détermine si un bloc de données est dans la SGA ou non lorsque le plan d'exécution retenu est un Full Table Scan.

  6. #6
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Ah ok. Facile: il le cherche d'abord dans le buffer cache et s'il ne le trouve pas fait un 'physical read' pour l'y mettre. Dans les deux cas, il connait le rowid du ou des bloc(s).

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 10/07/2015, 14h24
  2. calcul de taille pour creation de table
    Par olivier] dans le forum Administration
    Réponses: 4
    Dernier message: 07/12/2010, 16h08
  3. Réponses: 6
    Dernier message: 11/08/2010, 15h50
  4. Réponses: 20
    Dernier message: 24/02/2010, 17h14
  5. Réponses: 14
    Dernier message: 30/04/2008, 15h34

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