Définition des priorités

Lorsqu'un utilisateur ouvre une session de base de données, une priorité lui est attribuée. La priorité de session détermine la priorité de tous les travaux soumis pendant la session. Par exemple, si une session se voit attribuer la priorité HAUT, tous les travaux soumis au cours de cette session ont également la priorité HAUT, de même que leurs plans correspondants.

La priorité d'une session particulière (et de ses emplois et de leurs plans) est déterminée par plusieurs facteurs :
  • Paramètres système
  • Paramètres de l'utilisateur qui a soumis le travail correspondant
  • Paramètres des groupes d'utilisateurs auxquels l'utilisateur appartient, le cas échéant
  • Paramètres de la session utilisée pour soumettre le travail correspondant
En outre, les règles d'ordonnancement peuvent modifier les priorités du plan lorsque certaines conditions sont remplies par les attributs du travail correspondant.
Les paramètres suivants déterminent les priorités par défaut et maximales pour une session :
  • Exécutez la commande SET SYSTEM DEFAULT pour définir les paramètres suivants :
    DEFPRIORITÉ
    La priorité par défaut du système, qui est la priorité attribuée à tout travail pour lequel une priorité n'est pas définie par d'autres moyens. La valeur par défaut est NORMAL.
    MAXPRIORITÉ
    La priorité maximale du système, qui est le niveau de priorité le plus élevé pouvant être défini pour un travail. La valeur par défaut est CRITICAL.
  • Pour chaque utilisateur, vous pouvez lancer la commande CREATE USER ou ALTER USER pour définir les paramètres suivants :
    DEFPRIORITÉ
    La priorité par défaut de l'utilisateur, qui est la priorité attribuée à tout travail soumis par l'utilisateur.
    MAXPRIORITÉ
    La priorité maximale de l'utilisateur, qui est le niveau de priorité le plus élevé que l'utilisateur peut définir pour tout travail soumis.
  • Pour chaque groupe d'utilisateurs, vous pouvez lancer la commande CREATE GROUP ou ALTER GROUP pour définir les paramètres suivants :
    DEFPRIORITÉ
    La priorité par défaut du groupe, qui est la priorité attribuée à tout travail soumis par un membre du groupe d'utilisateurs.
    MAXPRIORITÉ
    La priorité maximale du groupe, qui est le niveau de priorité le plus élevé qu'un membre du groupe d'utilisateurs peut définir pour tout travail soumis.
La première des règles suivantes à appliquer détermine la priorité attribuée à une session :
  1. Une priorité par défaut autre que AUCUNE a-t-elle été attribuée à l'utilisateur ? Si c'est le cas, cette priorité est attribuée à la session.
  2. L'utilisateur est-il membre d'au moins un groupe d'utilisateurs pour lequel une priorité par défaut autre que NONE a été spécifiée ? Si c'est le cas, la priorité par défaut la plus basse est attribuée à la session.
  3. La priorité par défaut du système est attribuée à la session.
Si la priorité déterminée dépasse la priorité maximale pour l'utilisateur, la priorité maximale est attribuée à la place. La première des règles suivantes à appliquer détermine la priorité maximale pour un utilisateur particulier :
  1. Une priorité maximale autre que AUCUNE a-t-elle été attribuée à l'utilisateur ? Si c'est le cas, cette priorité ou la priorité maximale du système, si elle est inférieure, est la priorité maximale de l'utilisateur.
  2. L'utilisateur est-il membre d'au moins un groupe d'utilisateurs pour lequel une priorité maximale autre que NONE a été spécifiée ? Si c'est le cas, la plus basse de ces priorités par défaut et de la priorité maximale du système est la priorité maximale de l'utilisateur.

Un utilisateur peut lancer la commande ALTER SESSION pour modifier la priorité de la session. Cela affecte tous les travaux en cours d'exécution et ceux qui seront soumis pendant le reste de la session.

En outre, une règle d'ordonnancement peut modifier la priorité des plans d'un travail lorsque certaines conditions sont remplies. La priorité définie par une règle de l'ordonnanceur n'est soumise à aucune des restrictions de priorité maximale imposées à un utilisateur ou à un groupe d'utilisateurs particulier, ni à la priorité maximale du système. Vous pouvez créer des règles de planification qui utilisent une combinaison des critères suivants pour remplacer la priorité déterminée par d'autres moyens :
Quel utilisateur a soumis le travail correspondant
Vous pouvez utiliser les règles du planificateur pour remplacer l'attribution de priorité d'un plan en fonction de l'utilisateur qui le soumet. Par exemple, la règle d'ordonnancement suivante définit la priorité de tous les plans pour les travaux soumis par l'utilisateur bob à CRITICAL, indépendamment des restrictions de priorité imposées à bob directement, par le biais d'un groupe d'utilisateurs ou par la priorité maximale du système :
IF USER IS bob THEN SET PRIORITY CRITICAL
Le contenu des champs d'information du client
Un administrateur ou un programme d'application peut définir les champs d'information client suivants dans une requête :
ID utilisateur
L'identifiant de l'utilisateur sous lequel le client s'exécute.
Nom de l'application
Le nom du client.
Nom du poste de travail
Le nom d'hôte du poste de travail sur lequel le client s'exécute.
Identifiant comptable
La valeur de la chaîne de comptabilité des informations client spécifiées pour la session.
Vous pouvez utiliser des règles de planification pour attribuer une priorité en fonction du contenu de ces champs (voir Informations sur le client). Par exemple, la règle d'ordonnancement suivante augmente la priorité de tous les plans pour les travaux soumis par l'application Cognos:
IF CLIENT_APPLICATION_NAME IS Cognos THEN INCREASE PRIORITY
Estimation des coûts
Pour chaque plan, l'optimiseur calcule le coût attendu du traitement de ce plan. Vous pouvez utiliser les règles du planificateur pour attribuer une priorité sur la base de l'estimation des coûts calculée. Par exemple, les règles d'ordonnancement suivantes modifient les priorités des plans en fonction de leurs estimations de coûts :
IF ESTIMATE < 4 THEN SET PRIORITY NORMAL
IF ESTIMATE >= 4 ESTIMATE < 30 THEN SET PRIORITY HIGH
IF ESTIMATE >= 30 THEN SET PRIORITY LOW
La base de données à laquelle il faut accéder
Vous pouvez utiliser les règles du planificateur pour attribuer ou modifier les priorités des plans en fonction de la base de données à laquelle chaque plan accède. Par exemple, les règles d'ordonnancement suivantes diminuent la priorité de tous les plans qui accèdent à la base de données dbx1::
IF DATABASE IS dbx1 THEN DECREASE PRIORITY
Le tableau auquel il faut accéder
Vous pouvez utiliser les règles du planificateur pour attribuer ou modifier les priorités des plans en fonction de la table à laquelle chaque plan accède. Par exemple, la règle d'ordonnancement suivante diminue la priorité de tous les plans qui accèdent à la table tab1 ou tab2::
IF TABLE IN (tab1,tab2) THEN DECREASE PRIORITY
Balises personnalisées
Vous pouvez ajouter un nombre illimité de balises aux sessions (voir Balises). Tous les plans entrant dans le cadre de cette session reçoivent la même étiquette. Vous pouvez également créer des règles d'ordonnancement qui ajoutent des balises directement à tous les plans qui remplissent les conditions spécifiées par la règle. Vous pouvez ensuite utiliser les règles du planificateur pour attribuer ou modifier les priorités du plan en fonction de ces balises. Par exemple, la règle d'ordonnancement suivante augmente la priorité de tous les plans pour lesquels les balises spécifiées ont été définies :
IF TAG IS eom THEN INCREASE PRIORITY
Important : soyez prudent lorsque vous attribuez la priorité critique et la priorité élevée. Si vous affectez trop de tâches à la priorité élevée ou critique, vous risquez de paralyser les tâches normales et de faible priorité.