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

Adaptive Server Enterprise Sybase Discussion :

Comment améliorer les performances de BCP


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut Comment améliorer les performances de BCP
    Bonsoir,

    J'utilise BCP pour la migration d'ASE 12.5 vers 1SE 15.0.3, afin de pouvoir modifier la taille des blocks utilisée. Pour une base de 3 Go de Data, il faut environ 1h15 (et parfois plus) pour effectuer cette migration alors que cette même base migrée via Dump/Load (sans modifier la taille des blocks) met 2 fois moins de temps. Je souhaite connaitre les paramètres sur lesquels je peux jouer pour améliorer les performances de BCP, car la doc Sybase ne dit rien concernant les performances.
    Pour info, lorsque je fais mon Load, il est effectué en BCP Fast.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Bonsoir,

    du peux que je sais, une des choses qui peut ralentir l'insertion via BCP c'est la présence d'index sur la table dans laquelle les données sont insérées.

    Il est recommandé de n'avoir aucun index sur les tables "BCPisées" et de les rajouter par la suite

    My 0,02€...
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    Bonjour Arnaud et merci pour ta réponse.

    Je n'ai ni indexe, ni trigger sur mes tables lorsque j'effectue mon bcp. C'est d'ailleurs pour ça qu'il se fait en mode Fast.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    même base migrée via Dump/Load (sans modifier la taille des blocks) met 2 fois moins de temps
    donc par dump/load, cela met 30 mins ? Cela me semble un peu long non ? à moins que tu fasses ta migration sur ton pc ?

    Le paramètre sur lequel tu peux peut-être jouer est le -b (batch size). Plus le batch size est important et moins l'activité de commit sera importante donc généralement, sur de gros volumes, ça sra plus rapide. ASE matérialise une transaction toutes les <batch size> lignes. Donc si ASE valide toutes les 10000 lignes (par défaut), il peut être interessant de le faire seulement tous les millions par ex. Mais attention à la saturation du journal.

    Si tu est sous unix, tu peux également utiliser un canal nommé (pipe) pour effectuer le bcp-out et le bcp-in en simultané pour gagner du temps. Tout est expliqué ici : http://www.sybase.com/detail?id=1080140

    Regarde également les régles de fast/slow bcp car depuis la 15.0.2, cela change un peu :

    http://infocenter.sybase.com/help/in...502/X65215.htm

    Si la table de destination est en mode de verrouillage DOL avec un index cluster et /ou avec des index nonclustered et non uniques, tu fais du fast bcp.
    Emmanuel T.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    Salut Emmanuel, merci pour la réponse.

    Non, la migration se fait entre 2 serveurs 2 CPU quad core multi-thread (soit 16 coeurs visibles) avec 72 Go de RAM, connectés à une baie SAN.

    L'augmentation du batch size -b de 10 000 à 1 000 000 m'a généré des erreurs Segmentation fault. Je l'ai repassé à 100 000, pour voir. J'ai vu le document pour canal nommé, mais il indique un CR# 626571 qui n'est pas accessible. Je cherche aussi du coté du -A packet_size ainsi que du buffer pool large IO.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    salut Tibal

    par curiosité, quel hardware/os utilises-tu ? En effet le packet size peut aider également ainsi que les i/o étendues.

    Il faut également que tu vérifies côté système d'exploitation si tout est ok (vmstat, iostat).

    A+
    Emmanuel T.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    L'OS est une RedHat 5.4 64bit sur des lames HP avec 2 CPU quadcore multithreadés (16 CPU vues par l'os) avec 72 Go de RAM.
    Lors du BCP in, la charge machine est extrèment faible (top, vmstat, iostat, ...). Les serveurs sont pluggués à une baie SAN, où sont localisés les fichiers des bases concernées.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    En fait,
    Les paramètres que j'ai utilisé pour améliorer les performance du BCP in sont les bons, à savoir :
    -b batchsize
    -A packet_size
    Les erreurs Segmentation fault sont dues à un bug en cours de correction par Sybase. Celle ci ne sera disponible que pour la 15.5, aux alentours de juillet.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/10/2009, 10h08
  2. Comment améliorer les performances lors d'une redirection?
    Par Courgette17 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/03/2008, 09h54
  3. 4D : comment améliorer les performances ?
    Par Elriks dans le forum 4D
    Réponses: 10
    Dernier message: 05/10/2007, 11h21
  4. Réponses: 2
    Dernier message: 01/08/2006, 10h20

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