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 :

Quelques questions sur les index BITMAP


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Quelques questions sur les index BITMAP
    Bonjour à tous,

    j'ai qqls questions concernant les indexs BITMAP dont j'aimerais vous faire part:

    1) Est ce qu'un index en bitmap ne peut être créé que sur une colonne numérique?

    2) Est ce qu'un plan d'exécution d'une requête ne peut utiliser qu'un seul index en bitmap sur une table même s'il en existe plusieurs sur cette table?

    3) Est ce qu'il faut reconstruire dynamiquement un index en bitmap à chaque mise à jour de la table (après chaque insert, update ou delete)?

    Merci d'avance de vos eclaircissement

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    1/ Non.
    2/ Non (mais je crois que ça dépend de la version de la base)
    3/ non, les indexes sont mis à jour automatiquement.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Voici un cours en anglais sur les Bitmaps
    Tu verras sur la fin l'exemple pour ta question 2
    http://www.dbazine.com/oracle/or-articles/jlewis3

    Un petit lien en français, assez visuel, mais pas super complet.
    http://perso.enst.fr/~saglio/bdas/00/orapbs/sld035.htm
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci pour ces informations McM, je vais me pencher sur les liens que tu m'a fournis

  5. #5
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Attention : Les index Bitmap peuvent sembler intéressant mais il sont tres mauvais en mise a jour. Il faut donc les réserver pour des systemes de type DW et les proscrire pour des systeme de type OLTP

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Wurlitzer
    tres mauvais en mise a jour
    pas seulement avec les opérations UPDATE, mais aussi avec INSERT et DELETE... Je précise car au début je croyais que l'index n'était mis à jour que lorsque l'on faisait un UPDATE de la clé. Mais un INSERT bloque un grand nombre de lignes voire toute la table.

  7. #7
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    En fait une feuille d'index BITMAP contient autant de suites de 1 et 0 que de valeurs différentes de l'index.
    La suite correspond aux lignes de la tables par rowid

    Imaginons les lignes 10 à 20 d'une table avec une colonne qui peut prendre les valeur R/V/B

    Rowid 10 B
    Rowid 11 R
    Rowid 12 B
    Rowid 13 V
    Rowid 14 B
    Rowid 15 V
    Rowid 16 B
    Rowid 17 V
    Rowid 18 B
    Rowid 19 R
    Rowid 20 V

    Un index bitmap sur cette colonne aura plusieurs feuilles, chaque feuille d'index est décrite comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Rowid début : 10
    Rowid Fin : 20
    B 10101010100
    V 00010101000
    R 01000000011
     
    - BRBVBVBVBRV -- Ligne pour mieux comprendre
    La modification d'une de ces lignes locke toute la feuille soit les rowid 10 à 20
    En pratique, le nombre de ROWID est beaucoup plus important (Block de 8 Ko, 4 valeurs distinctes : 8000 * 8 bits / 4 valeurs distinctes = 4 suites de 16 000 1/0 => 16 000 rowid.)

    Pour l'update, je comprend qu'il suffit de modifier les listes impactées pour le rowid modifié.

    Par contre là où je ne sais pas c'est pour l'insert et le delete. Comment ça marche au niveau rowid.
    Un insert, j'imagine que le rowid créé arrive en fin.
    Pour un delete est ce que toutes les listes pour le rowid ont 0 ?

    Edit : 18h25
    Finalement en relisant l'article de Lewis, c'est pas vraiment ça.
    Chaque valeur est dans une feuille d'index différente.
    Par contre les rowid debut et fin, il parle de "contiguous section of table". Est ce qu'un delete du rowid 15 créerait en fait 2 blocks contigus (10-14 et 16-20) ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    effectivement un bloc de 8k permet de stocker plus de 8000 valeurs. Je ne peux t'éclairer sur ta question. Si tu fais un insert dans ton bloc de 8k, tu vas verrouiller des milliers de lignes dans le pire des cas.

  9. #9
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Ok, Je ferai des tests chez moi.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Quelques questions sur les threads
    Par benj63 dans le forum C++Builder
    Réponses: 28
    Dernier message: 21/11/2005, 13h27
  2. Question sur les index
    Par Veve44 dans le forum Oracle
    Réponses: 3
    Dernier message: 09/11/2005, 14h01
  3. Question sur les index
    Par barok dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 31/05/2005, 08h06
  4. [DB2] Question sur les index et les vues
    Par ahoyeau dans le forum DB2
    Réponses: 1
    Dernier message: 14/03/2005, 08h30
  5. Questions sur les indexations
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/05/2004, 11h38

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