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 :

Comment l'optimiseur d'Oracle calcule le coût


Sujet :

PL/SQL Oracle

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut Comment l'optimiseur d'Oracle calcule le coût
    Bonjour,
    j'ai des questions sur l'article "Comment l'optimiseur d'Oracle calcule le coût " paru dans Magazine de ce mois.
    1- il est dit dans l'articke :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dans ce cas
    db_file_multiblock_read_count a la valeur 32 et donc K
    prends la valeur 16,41
    ................
    ...................
    Pour une valeur de paramètre
    db_file_multiblock_read_count égal à 16, K prends la
    valeur 10.40
    Comment la valeur de K est calculée à partir de db_file_multiblock_read_count ?

    2-dans le tableau Prédicat/Facteur de Filtrage (voir image fichier joint)

    que veut dire c1.density ? Est-ce la densité de la valeur de colonne C1 ?
    Et qu'est-ce la variable de liaison ?
    D'avance merci.
    Images attachées Images attachées  

  2. #2
    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
    Bonjour,

    #1 En fait dans l’article c’est écrit
    Dans ce cas db_file_multiblock_read_count a la valeur 32 et donc K prends la valeur 16,41 [3], la valeur du facteur K étant calculé d'une manière empirique.
    Le lien [3] vous dirige vers le site du http://www.centrexcc.com ou vous allez trouver l’article mentionné. Bref, l’idée est d’avoir observée la valeur du coût pour un nombre des blocs constant en modifiant le paramètre db_file_multiblock_read_cout et d’en avoir calculé ensuite une fonction qui va approximer le mieux possible les résultats observés.
    #2 Oui, c’est la densité de la colonne col1 mieux dit la valeur stockée dans la table user_tab_col_statistics dans la zone density.

    #3 Ca tombe bien, je suis en train de rédiger un article sur ce sujet dont voici un petit extrait (« brut de fonderie » pour dire ainsi)

    Les variables de liaison
    Toutes les application de type OLTP envoient souvent des requêtes similaire qui diffèrent seulement dans les valeurs utilisées pour filtrer les données, comme pour exemple: la recherches des informations (adresse de livraison, adresse de facturation, etc. ) d'un client en utilisant son nom et prénom. On peut parler dans ce cas des requêtes paramétrable. Pour exemple les deux requêtes suivantes ont la même structure:

    select ename from emp where empno = 7369

    select ename from emp where empno = 7900

    donc on pourrait les remplacer par la requête générique:

    select ename from emp where empno = :empno

    Du ce point de vue les variables de liaison jouent un rôle similaire aux paramètres passés aux sous-programmes dans le cas des autres langages de programmation. Dans cet exemple les littéraux qui changent d'une exécution de la requête à l'autre sont remplacés par une variable de liaison qui changeras de valeur au moment de l'exécution de la requête.
    Il est intéressant de noter qu'au bout de la ligne toutes les langages de programmation qui interagissent avec Oracle construisent leur requêtes SQL d'une manière directe ou indirecte en le stockant dans une chaîne de caractères et que souvent coller les valeurs des variables saisies par les utilisateurs via l'interface IHM semble une opération assez naturelle et facile. Voilà un exemple écrit en Java mais, gardez à l'esprit, que le choix du langage n'a aucune importance dans ces discutions; les mêmes concepts s'appliquent aussi pour les autres langages comme PHP, Ruby, VB, C, C++ ou bien le PL/SQL quand on utilise les requêtes SQL dynamique.
    ...
    txt = "select ename"
    + " from emp"
    + " where empno=" + Long.toString(empno);
    rs = st.executeQuery(txt);
    if (rs.next()) {
    ...
    Si vous est développeur est vous avez déjà écrit ce type de requête sans vous soucier de conséquences cet article est pour vous.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/12/2012, 09h41
  2. Réponses: 0
    Dernier message: 18/03/2010, 10h21
  3. Comment l'optimiseur d'Oracle calcule le coût
    Par Vincent Rogier dans le forum Contribuez
    Réponses: 8
    Dernier message: 31/07/2009, 11h34
  4. [CR8.5] Comment installer driver ODBC oracle
    Par Tony49 dans le forum Connectivité
    Réponses: 2
    Dernier message: 14/03/2005, 14h22

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