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

Sybase Discussion :

[ASE] Duree de creation d'index trop longue


Sujet :

Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut [ASE] Duree de creation d'index trop longue
    Bonjour,

    Je dois dorenavant pouvoir utiliser le champ (existant) d'une table comme critere de recherche dans mon appli.

    Apres avoir realise des tests dans un environnement de copie, la creation de l'index a pris 10h. C'est bcp trop car je ne peux pas couper la base autant de tps.

    Est-ce qqn a une idee ?

    D'avance merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Par défaut
    Bonjour,
    Voici qqu idées :
    - Si tu crées un index cluster, vérifie les temps que tu obtiens en créant plutôt un index non cluster.
    - Tes deux environnements sont-ils bien les mêmes (mémoire, cpu, charge, ...). Sinon, il se peut que la création de ton index ne dure pas 10h sur l'autre environnement.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Par défaut
    Sinon, voici une petite méthode (il existe peut être plus simple) qui pourrait réduire pas mal le temps d'arrêt de la base. Je n'ai pas testé la méthode qui demande quand même un certain travail.


    - Création d'une table tab ayant la même structure que la table à indexer (ne pas créer d'index pour le moment, donc pas de contraintes d'unicité ou de clé primaire non plus)

    - Création de triggers sur la table à indexer permettant d'alimenter une table de travail afin de récupérer les lignes de la table à indexer mises à jour (insert/update/delete) à partir de maintenant (créer une seule table avec un champ permettant de faire la différence entre les trois opérations ; ou alors créer trois tables de travail...).

    - Insertion des lignes dans tab par insert/select.

    - Création de tous les index (ne pas oublier les contraintes d'unicité et primaire si c'est le cas) dans tab, y compris le nouvel index.

    - Stopper l'activité sur la base (mettre la base en single user par exemple)

    - Dropper la table à indexer ( copier avant les lignes dans une table temporaire au cas ou mais cela va rallonger le temps d'arrêt).

    - Renommer la table tab avec le nom de la table qui vient d'être droppée (sp_rename)

    - Puis appliquer les lignes de la table de travail à la table renommée de telle sorte à obtenir un résultat cohérent (attention au doublon qui auraient pu apparaitre dans la table tab causés par la durée de l'insertion des lignes dans tab par insert/select).

    - Redémarrer l'activité sur la base


    Attention à bien tester cette méthode pour vérifier qu'il n'y a pas d'impactes non souhaités sur les données.
    Attention en particulier s'il y avait déjà des triggers sur la table à index et d'éventuelles contraintes d'intégrité référentielles entre cette table et d'autres objets.
    Bien faire une sauvegarde de la base avant.

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut
    Merci pour toutes ces réponses. Je me suis orienté vers la seconde solution et puis finalement changement de programme ce matin, je vais pouvoir arrêter la base

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Et le partitionnement ?
    Et la parallélisation ?
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  6. #6
    Membre averti
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut
    Là ca dépasse mon domaine de compétences...je ne suis pas DBA...ce n'est que temporaire

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 12/03/2010, 17h21
  2. Durée d'enregistrement de cvSaveImage trop longue
    Par Philooo dans le forum OpenCV
    Réponses: 3
    Dernier message: 18/03/2008, 11h29
  3. chaine trop longue pour être indexée
    Par ctobini dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 04/10/2007, 10h36
  4. [ASE] Procèdure trop longue
    Par Benjamin78 dans le forum Sybase
    Réponses: 2
    Dernier message: 11/04/2006, 10h01
  5. [ASE][T-SQL]Procédure trop longue
    Par Benjamin78 dans le forum Sybase
    Réponses: 5
    Dernier message: 21/03/2006, 12h25

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