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 :

[ASE 15.0.2] tempdb system segment avec: group by, union et order by


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut [ASE 15.0.2] tempdb system segment avec: group by, union et order by
    Bonjour
    Pour la tempdb, ja'i :
    - un device 500Mo (segment 'default')
    - un device 500Mo (segment 'system')
    - un device 1100Mo (segment 'log')

    Est-il normal que la requête telle que dans le fichier joint,
    occasionne un dépassement de 500 Mo de segment 'system'
    sur un device de la base tempdb ?

    LOrs de l'exécution, on voit que le segment 'system' de la base temporaire est très sollicité, et qu'il y a des 'Stalls' au niveau de pool 2Ko.

    Faut-il écrire autrement ce genre de requêtes:
    - ((select1 avec group by)
    - Union
    - (Select2 avec un group by))
    - order by ?

    Faut-il modifier les paramètres du serveur ?

    Merci
    msomso
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Ce qui ce passe - comme c'est un "union" et pas un "union all" ASE doit générer tout le result set, le trier, et éliminer les doublons. Si l'une ou l'autre branche de l'union est grande (cad grand nombre de lignes retournées) cela va évidemment consommer pas mal de place dans la tempdb, et comme c'est une worktable elle est placée sur le segment "system" et non pas "default". Donc - si le result set est grand tu peux dépasser les 500MB disponibles.

    Michael

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    D'accord avec toi Michael,
    mais utiliser 500 Mo pour 12000 lignes retournées ... ?

    msomso

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Effectivement - cela semble beaucoup...

    Mais je suppose que cela depend du taux de remplissage avant de commencer (bien que le segment system devrait pas vraiment contenir beaucoups de choses hormis les work table...)

    Michael

  5. #5
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 134
    Points : 168
    Points
    168
    Par défaut
    En plus du union qui necessite une table de travail, en cas de jointure, ASE peut faire du reformatting:

    http://infocenter.sybase.com/help/in...zer/X46996.htm

    En gros, si on fait une jointure avec une table qui n'est pas bien indexée, ASE peut créer une worktable avec toutes les lignes nécessaires, la trier, l'indexer et effectuer la jointure avec celle ci.
    De plus, si les merge joins sont activés sur votre serveur, sachez qu'ils consomment aussi beaucoup de place sur le segment system de la tempdb.

    Pouvez-vous nous donner le plan d'exécution (set showplan on) ainsi que la volumétrie des tables concernées?

Discussions similaires

  1. [VC++] System TrayIcon avec QT
    Par yelbied dans le forum MFC
    Réponses: 4
    Dernier message: 29/11/2005, 10h46
  2. [Système]communiquer avec un processus externe sous windows
    Par tweety dans le forum Général Java
    Réponses: 4
    Dernier message: 14/11/2005, 17h17
  3. [systeme] - pb avec deux OS Win 98 et WIN XP
    Par rico_49 dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/10/2005, 14h25
  4. Réponses: 13
    Dernier message: 20/06/2005, 14h13
  5. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 10h17

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