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
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 :
- 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.
- 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.
- La priorité par défaut du système est attribuée à la session.
- 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.
- 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.
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é.