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 :

Partitionnement index local/global


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 140
    Par défaut Partitionnement index local/global
    hello
    je souhaite savoir quand est ce que on doit rajouter l'une des options LOCAL ou GLOBAL dans la création d'un index partitionné ?

    A quoi sert de rajouter cette option dans la création d'un index si on sait à l'avance qu'un index sera local si sa clé de partitionnement = celle de la table
    et sera global dans tous les autres cas ???

  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
    J'ai du mal à bien saisir votre question.

    Un index local créera autant de partitions d'index qu'il y a de partitions de table.
    Ils seront plus petits et chacun sur leur périmètre, donc plus efficaces qu'un index global.

    Un index global créera un seul index sur la totalité de la table.
    Pour une clef primaire vous n'avez pas le choix, l'index sera global.

  3. #3
    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,

    D'une part, ce n'est pas parce que la clé de partitionnement sont dans l'index qu'il doit être local.
    exemple: un table des commandes partitionnées par HASH sur le numéro de commande, mais un index global dessus pour pouvoir faire des recherches sur une plage de numéro.
    Et ce n'est pas parce qu'il ne contient pas la clé de partitionnement qu'il doit être global. Exemple: table de paiements partitionnée par RANGE de date et index local sur le montant, pour faire des recherches sur un montant dans une plage de date.

    Bref, tout est possible. Il n'y a que le cas d'un index unique qui ne contient pas la clé de partitionnement, il doit être global.

    Cordialement,
    Franck.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 140
    Par défaut
    Merci de vos réponses.
    Je voulais savoir quelle est la valeur par défaut (LOCAL ou GLOBAL ?) dans la création d'un index ?

    Si l'index à créer est partitionnée doit-on préciser l'une ou l'autre dans le DDL de création ?

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    J'ai essayé via cet article d'expliquer une différence subtile entre un index local et un index global quant à la pénalité en temps de réponse que l'un(local) peut avoir lorsqu'il est créé sans tenir compte de la nature des requêtes que l'application est sensée faire.

    Lisez le et si vous avez des questions, je suis disponible

    Bien à vous

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 140
    Par défaut
    Quand on précise rien comme option ( ni local ni global) , il est comment l'index ?

  7. #7
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    Pourquoi ne pas l'avoir essayé?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    CREATE TABLE t_range
        (
          ID           NUMBER              NOT NULL,
          X            VARCHAR2(30 CHAR)   NOT NULL,
          D            DATE,
          C1           NUMBER
        )
        PARTITION BY RANGE (ID)
        (
         PARTITION P_10000 VALUES LESS THAN (10000) ,
         PARTITION P_20000 VALUES LESS THAN (20000) ,
         PARTITION P_30000 VALUES LESS THAN (30000) ,
         PARTITION P_40000 VALUES LESS THAN (40000) ,
         PARTITION P_50000 VALUES LESS THAN (50000) ,
         PARTITION P_60000 VALUES LESS THAN (60000)
       );
     
    create index t1_b_tree on t_range(id);
    create index t1_local on t_range(d) local;
    create index t1_global on t_range(c1) global;
    create index t1_fbi on t_range(id, trunc(d));
    create index t1_reverse on t_range(id,c1) reverse;
     
     
     select index_name, index_type, partitioned
     from user_indexes
     where table_name = 'T_RANGE';
     
    INDEX_NAME                     INDEX_TYPE                  PAR
    ------------------------------ --------------------------- ---
    T1_REVERSE                     NORMAL/REV                  NO
    T1_FBI                         FUNCTION-BASED NORMAL       NO
    T1_GLOBAL                      NORMAL                      NO
    T1_LOCAL                       NORMAL                      YES
    T1_B_TREE                      NORMAL                      NO
    La question qui aurait mérité d'être posée ici est la suivante:

    Quelle est la différence entre T1_B_TREE et T1_GLOBAL?

    pour rappel voici la syntaxe de leur création
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    create index t1_b_tree on t_range(id);
    create index t1_global on t_range(id) global; -- il faut supprimer le premier avant

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 140
    Par défaut
    Citation Envoyé par Mohamed.Houri Voir le message
    La question qui aurait mérité d'être posée ici est la suivante:

    Quelle est la différence entre T1_B_TREE et T1_GLOBAL?

    pour rappel voici la syntaxe de leur création
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    create index t1_b_tree on t_range(id);
    create index t1_global on t_range(id) global; -- il faut supprimer le premier avant
    Non désolé je ne vois pas la différence ...
    Peut être l'option global rajoute une information supplémentaire à l'index ?

Discussions similaires

  1. Index local invalide après split partition
    Par pat29 dans le forum Oracle
    Réponses: 1
    Dernier message: 17/01/2008, 09h04
  2. index local vs index global
    Par jamjam19 dans le forum Oracle
    Réponses: 2
    Dernier message: 05/09/2006, 11h56
  3. [Rotations] Rotations Locales/Globales avec Quaternions
    Par Clorish dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 24/05/2005, 16h41
  4. Index partitionné LOCAL/GLOBAL
    Par lalystar dans le forum Oracle
    Réponses: 3
    Dernier message: 11/02/2005, 15h15

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