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 PostgreSQL Discussion :

Création de partition fail


Sujet :

Administration PostgreSQL

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 8
    Par défaut Création de partition fail
    Bonjour

    Je suis en postgres 15.17
    impossible de comprendre pourquoi cela ne fonctionne pas
    si quelqu'un a une idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    drop table dberdlb2;
    CREATE TABLE dberdlb2 (
        printdoc varchar(36) NOT NULL
    ) 
    PARTITION BY RANGE (printdoc) ;
     
    CREATE TABLE dberdlb2_140000000000   partition of  dberdlb2 FOR VALUES FROM ('140000000000')  TO ('149999999999');
    CREATE TABLE dberdlb2_1490000000000  partition of  dberdlb2 FOR VALUES FROM ('1490000000000') TO ('1499999999999');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    orp=# drop table dberdlb2;
    DROP TABLE
    orp=# CREATE TABLE dberdlb2 (
    orp(#     printdoc varchar(36) NOT NULL
    orp(# )
    orp-# PARTITION BY RANGE (printdoc) ;
    CREATE TABLE
    orp=# CREATE TABLE dberdlb2_140000000000   partition of  dberdlb2 FOR VALUES FROM ('140000000000')  TO ('149999999999');
    CREATE TABLE
    orp=# CREATE TABLE dberdlb2_1490000000000  partition of  dberdlb2 FOR VALUES FROM ('1490000000000') TO ('1499999999999');
    ERROR:  partition "dberdlb2_1490000000000" would overlap partition "dberdlb2_140000000000"
    LINE 1: ...00000000  partition of  dberdlb2 FOR VALUES FROM ('149000000...
    Bien a vous

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 763
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Le message est pourtant clair : les valeurs des bornes de partitionnement provoquent un chevauchement.
    En effet la valeur de la borne de fin de la première partition est supérieure à la valeur de la borne de début de la deuxième.

    De plus, votre table ne comporte qu'une seule colonne de type varchar, visiblement aucune PK, ou alors le script est incomplet et la PK est cette colonne unique.
    Si c'est le cas, il faut savoir que le type varchar est ce qu'on peut faire de pire pour une PK :
    • les types char et varchar contiennent le plus souvent des valeurs sémantiques et de ce fait instables, or, une PK se propage dans les tables liées au travers des contraintes d'intégrité.
      Ce faisant, toute mise à jour de la PK provoque des mises à jour en cascade qui pénalisent les performances ;
    • à nombre de valeurs égal, l'encombrement d'un type char ou varchar est beaucoup plus important que celui d'une colonne de type integer, ce qui pénalise aussi les performances ;
    • le char et le varchar sont sensibles à la collation ;
    • le varchar requiert un alignement sur une longueur fixe pour les comparaisons ;
    • le varchar provoque des déplacements des pages data et index quand le contenu change en longueur effective, ce qui provoque une fragmentation (désorganisation), là aussi au détriment des performances.

    Il serait donc préférable d'ajouter une PK de type integer (voire BIGINT si besoin) avec la propriété IDENTITY.

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 8
    Par défaut
    Bonjour

    la table est simplifiée au maximum pour une compréhension facile

    Les partitions ne se chevauchent pas
    140 000 000 000 149 999 999 999
    1 490 000 000 000 1 499 999 999 999

    Si tout était en bigint il n'y aurait pas de pb
    mais evidement je n'ai pas tellement le choix

    merci tout de même pour la réponse

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 763
    Billets dans le blog
    10
    Par défaut
    Vu que le type est varchar, il y a bien chevauchement : le tri se fait de façon alphabétique, de gauche à droite
    Si le type était numérique, il n'y aurait pas de chevauchement.

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 8
    Par défaut
    Bonjour

    c'est bien cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    drop table dberdlb2;
    CREATE TABLE dberdlb2 (
        printdoc varchar(36) NOT NULL
    ) 
    PARTITION BY RANGE (printdoc) ;
     
    CREATE TABLE dberdlb2_140000000000   partition of  dberdlb2 FOR VALUES FROM ('000140000000000')  TO ('000149999999999');
    CREATE TABLE dberdlb2_1490000000000  partition of  dberdlb2 FOR VALUES FROM ('001490000000000')  TO ('001499999999999');
    Merci

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 763
    Billets dans le blog
    10
    Par défaut
    Mais pourquoi choisir un varchar si cette colonne ne contient que des valeurs numériques ?
    Un type integer voire bigint si nécessaire serait autrement plus concis et plus performant.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/09/2009, 12h48
  2. Accéder à une partition HPFS
    Par Krashtest dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 14/11/2003, 10h16
  3. Disquette de secours sans Lilo ni Grub sur la partition ?
    Par Blue_Angelica dans le forum Administration système
    Réponses: 3
    Dernier message: 13/11/2003, 15h59
  4. Slice sur Partitions
    Par Guizz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/07/2003, 17h45
  5. Problème montage partition Win sous RedHat ??
    Par baba dans le forum Administration système
    Réponses: 6
    Dernier message: 18/01/2003, 11h26

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