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 :

Gestion des tables partionnées


Sujet :

Administration Oracle

  1. #21
    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 orafrance Voir le message
    en effet, ce n'est pas une obligation dans l'absolu en revanche pour avoir une répartition égale entre toutes les partitions de hashage c'est incontournable

    Et il doit y avoir 2^n partitions : 2,4,8,16,32, etc...
    non, il n'est pas nécessaire que la clé soit unique. Bien sûr une colonne homme/femme ne me parait pas idéale pour créer 32 partitions, mais quelque chose comme le nom ou la date de naissance me parait tout à fait valable...

    Quant au puissance de 2, oui, c'est effectivement recommandé dans la doc

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    fait un test, un hashage sur une colonne non unique ne sera pas équitable

  3. #23
    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
    faisons donc le test :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    SQL> select 
      count(distinct object_id), 
      count(distinct object_name), 
      count(*) 
    from all_objects
     
    COUNT(DISTINCTOBJECT_ID) COUNT(DISTINCTOBJECT_NAME)   COUNT(*)
    ------------------------ -------------------------- ----------
                        5855                       4483       5855
     
     
    1 row selected.
    SQL> create table t1(id, name) 
      partition by hash(id) 
        (partition p1,partition p2) 
    as select object_id,object_name from all_objects
    Table created.
    SQL> create table t2(id, name) 
      partition by hash(name) 
        (partition p1,partition p2) 
    as select object_id,object_name from all_objects
    Table created.
    SQL> select count(*) from t1 partition (p1)
     
      COUNT(*)
    ----------
          2931
     
     
    1 row selected.
    SQL> select count(*) from t1 partition (p2)
     
      COUNT(*)
    ----------
          2927
     
     
    1 row selected.
    SQL> select count(*) from t2 partition (p1)
     
      COUNT(*)
    ----------
          2835
     
     
    1 row selected.
    SQL> select count(*) from t2 partition (p2)
     
      COUNT(*)
    ----------
          3026
     
     
    1 row selected.
    effectivement les partitions sont plus équitables avec une clé unique

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    par contre, j'explique pas les 4 lignes d'écart dans le 1° cas

    il me semblait que c'était comme du load balancing

  5. #25
    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
    non, c'est pas du load balancing, c'est du hashing

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> select 
      count(*),
      count(case when ora_hash(object_id)<power(2,31) then 1 end) p1,
      count(case when ora_hash(object_id)>=power(2,31) then 1 end) p2
    from all_objects
     
      COUNT(*)         P1         P2
    ---------- ---------- ----------
          5864       2956       2908
    [edit] l'algorythme ci-dessus n'est pas représentatif de l'algorythme interne utilisé par oracle[/edit]

    dans un hash partitioning, tu ne peux influencer la fonction hash.

    Pour faire un vrai load balancing,tu pourrais employer le partitioning système (11g) et développer ton algorythme toi-même.

    style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into t partition dataobj_to_partition(t,f(x)) values (y);
    bon, en principe le hash est suffisant, sauf si bien sûr on a plein de duplicate ou alors des colonnes style CLOB ou XMLTYPE ou des tables OBJECT qui ne supportent pas le hash-partitioning

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Gestion des tables avec PARTITION BY HASH
    Par popsmelove dans le forum Requêtes
    Réponses: 8
    Dernier message: 23/05/2008, 09h49
  2. gestion des tables lier
    Par poxvx dans le forum Access
    Réponses: 2
    Dernier message: 11/12/2007, 16h04
  3. Base fractionnée : gestion des tables liées
    Par hannii dans le forum Access
    Réponses: 5
    Dernier message: 26/02/2007, 11h02
  4. Réponses: 3
    Dernier message: 18/01/2007, 16h25
  5. Gestion des Tables d'Object
    Par Laurent Dardenne dans le forum SQL
    Réponses: 27
    Dernier message: 17/04/2004, 12h39

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