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]Utilisation d'une temporary database


Sujet :

Adaptive Server Enterprise Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 36
    Par défaut [ASE]Utilisation d'une temporary database
    Bonjour,

    afin d'estimer au mieux la taille d'une temporary database, je cherche à déterminer le "pique" de l'espace occupé dans celle-ci pendant un temps donné.

  2. #2
    Membre Expert

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    C'est quelque chose d'assez difficile, malheureusement.

    Tu peux faire du polling sur master..sysusages, ou tu peux mettre en place des proc sp_thresholdaction qui ne font que imprimer le nombre de pages utilisées (ou libre), ou encore utililser le resource governor en mode "warning" pour faire quelque chose de similaire.

    Le plus simple est probablement de mettre en place une sp_thersholdaction, qqch du genre (code non 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
     
    use sybsystemprocs
    go
     
     
    if object_id('sp_tmpthresholdaction') != null
    begin
        print "Dropping proc sp_tmpthresholdaction"
        drop proc sp_tmpthresholdaction
    end
    go
     
     
    create procedure sp_tmpthresholdaction
        @dbname varchar(30),
        @segmentname varchar(30),
        @free_space int,
        @status int
    as
     
          raiserror 99999 "THRESHOLD WARNING: database '%1!', segment '%2!' at '%3!' pages", @dbname, @segmentname, @free_space
     
     
    go
     
    -- Mettre des thresholds dans tempdb:
    use tempdb
    go
    -- le troisième argument (100000) est le nombre de pages restantes
    sp_addthreshold tempdb, 'default', 100000, sp_tmpthresholdaction
    go
    sp_addthreshold tempdb, 'default', 200000, sp_tmpthresholdaction
    go
    etc...
    go
    Ensuite lorsqu'un seuil est atteint un message est imprimé dans la log Sybase.

    Michael

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 36
    Par défaut
    QU'entuends-tu par faire du polling sus sysusages ?

  4. #4
    Membre Expert

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Quelque chose dans le genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select sum(curunreservedpgs(dbid, lstart, unreservedpgs)) from sysusages where dbid=2
    ce qui donne l'espace libre (en pages) dans la dbid 2 (tempdb).

    Michael

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 36
    Par défaut
    tu veux dire qu'il faudrait que je lance cette requête toutes les secondes par exemple.

    mais il n'est pas sûr que je n'ai pas mon pique entre deux lancement de cette reqûete.

    je crois que je vais opter pour les seuils car en les multipliant, je pourrais savoir si mon pique se trouve entre deux seuils (entre celui qui s'est déclenché et celui qui ne s'est pas déclenché.)

    je teste ça et je te dit mon résultat.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 36
    Par défaut
    Re bonjour,

    j'ai créé la petite procédure stockée suivante pour aider à déterminer l'utilisation d'un segment (qui peut être celui d'une tempdb). Elle permet de créer des seuils dans un intervalle de pages restantes avec un incrément defini dans cet intervalle.
    Les résultats d'accès des seuils sont placés dans une table.
    Une fois qu'on l'a exécuté, il suffit de vider le segment concerné, d'exécuter son processus, de vérifier dans la table créer les seuils qui ont été atteint pour estimer le besoin qui est entre le dernier seuil atteint et le premier non atteint. On peut ensuite finaliser en relancer toute la procédure sur un intervalle ainsi résuit.
    Remarque: la procédure stockée permet également de créer une procédure stockée qui va tout suprrimer (seuils, table résultat, procédure exécutée sur seuil). Elle simplifie bien les choses.

    seuil.sql

    Je ne définie pas cette discussion comme résolu car si des personnes veulent critiquer la solution ou l'écriture de la procédure stockée, qu'elles n'hésitent pas.

Discussions similaires

  1. [Débutant] Problème utilisation d'une local database
    Par Laloux dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/07/2015, 11h56
  2. [ASE]Utiliser timestamp dans une clause WHERE
    Par JeffK dans le forum Adaptive Server Enterprise
    Réponses: 14
    Dernier message: 03/12/2007, 12h34
  3. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23
  4. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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