Definizione delle priorità
Quando un utente apre una sessione del database, a questa sessione viene assegnata una priorità. La priorità della sessione determina la priorità di tutti i lavori inviati durante la sessione. Ad esempio, se a una sessione viene assegnata la priorità ALTA, anche tutti i lavori inviati durante quella sessione avranno la priorità ALTA, così come i piani corrispondenti.
- Impostazioni di sistema
- Impostazioni dell'utente che ha inviato il lavoro corrispondente
- Impostazioni per i gruppi di utenti a cui l'utente appartiene, se presenti
- Impostazioni per la sessione utilizzata per inviare il lavoro corrispondente
- Emettere il comando SET SYSTEM DEFAULT per impostare i seguenti parametri:
- DEFPRIORITÀ
- La priorità predefinita del sistema, che è quella assegnata a tutti i lavori per i quali non è stata impostata una priorità in altro modo. L'impostazione predefinita è NORMALE.
- MAXPRIORITÀ
- La priorità massima del sistema, che è il livello di priorità più alto che può essere impostato per qualsiasi lavoro. L'impostazione predefinita è CRITICA.
- Per ogni utente, è possibile eseguire il comando CREATE USER o ALTER USER per impostare i seguenti parametri:
- DEFPRIORITÀ
- La priorità predefinita dell'utente, che è la priorità assegnata a qualsiasi lavoro inviato dall'utente.
- MAXPRIORITÀ
- La priorità massima dell'utente, ovvero il livello di priorità più alto che l'utente può impostare per qualsiasi lavoro inviato.
- Per ogni gruppo di utenti, è possibile eseguire il comando CREATE GROUP o ALTER GROUP per impostare i seguenti parametri:
- DEFPRIORITÀ
- La priorità predefinita del gruppo, ovvero la priorità assegnata a qualsiasi lavoro inviato da un membro del gruppo di utenti.
- MAXPRIORITÀ
- La priorità massima del gruppo, ovvero il livello di priorità più alto che un membro del gruppo di utenti può impostare per qualsiasi lavoro inviato.
- All'utente è stata assegnata una priorità predefinita diversa da NESSUNO? In caso affermativo, la priorità viene assegnata alla sessione.
- L'utente è membro di almeno un gruppo di utenti per il quale è stata specificata una priorità predefinita diversa da NESSUNO? In tal caso, alla sessione viene assegnata la priorità più bassa tra quelle predefinite.
- Alla sessione viene assegnata la priorità predefinita del sistema.
- All'utente è stata assegnata una priorità massima diversa da NESSUNO? In tal caso, la priorità massima dell'utente è quella o la priorità massima del sistema, a seconda di quale sia più bassa.
- L'utente è membro di almeno un gruppo di utenti per il quale è stata specificata una priorità massima diversa da NESSUNO? In tal caso, la priorità massima dell'utente è la più bassa tra quelle predefinite e la priorità massima del sistema.
Un utente può lanciare il comando ALTER SESSION per modificare la priorità della sessione. Questo influisce su tutti i lavori attualmente in esecuzione e che vengono inviati durante il resto della sessione.
- Quale utente ha inviato il lavoro corrispondente
- È possibile utilizzare le regole di pianificazione per annullare l'assegnazione della priorità di un piano in base all'utente che lo presenta. Ad esempio, la seguente regola di scheduler imposta la priorità di tutti i piani per i lavori inviati dall'utente bob su CRITICO, indipendentemente da qualsiasi restrizione di priorità imposta a bob direttamente, tramite un gruppo di utenti o dalla priorità massima del sistema:
IF USER IS bob THEN SET PRIORITY CRITICAL - Il contenuto dei campi delle informazioni sul cliente
- Un amministratore o un programma applicativo può impostare i seguenti campi di informazioni sul client in una query:
- ID utente
- L'ID utente con cui il client è in esecuzione.
- Nome applicazione
- Il nome del client.
- Nome stazione di lavoro
- Il nome host della workstation su cui gira il client.
- Stringa account
- Il valore della stringa di contabilità dalle informazioni sul client specificate per la sessione.
IF CLIENT_APPLICATION_NAME IS Cognos THEN INCREASE PRIORITY - Stime dei costi
- Per ogni piano, l'ottimizzatore calcola il costo previsto per la sua elaborazione. È possibile utilizzare le regole di pianificazione per assegnare una priorità in base alla stima dei costi calcolati. Ad esempio, le seguenti regole di pianificazione modificano le priorità dei piani in base alle stime dei costi:
IF ESTIMATE < 4 THEN SET PRIORITY NORMAL IF ESTIMATE >= 4 ESTIMATE < 30 THEN SET PRIORITY HIGH IF ESTIMATE >= 30 THEN SET PRIORITY LOW - Il database a cui si deve accedere
- È possibile utilizzare le regole di pianificazione per assegnare o modificare le priorità dei piani in base al database a cui accede ciascun piano. Ad esempio, le seguenti regole di scheduler diminuiscono la priorità di tutti i piani che accedono al database dbx1:
IF DATABASE IS dbx1 THEN DECREASE PRIORITY - La tabella a cui si deve accedere
- È possibile utilizzare le regole di pianificazione per assegnare o modificare le priorità dei piani in base alla tabella a cui accede ciascun piano. Ad esempio, la seguente regola di pianificazione riduce la priorità di tutti i piani che accedono alla tabella tab1 o tab2:
IF TABLE IN (tab1,tab2) THEN DECREASE PRIORITY - Tag personalizzati
- È possibile aggiungere un numero qualsiasi di tag alle sessioni (vedere Tag). Tutti i piani che rientrano nell'ambito di quella sessione ricevono lo stesso tag. È anche possibile creare regole di pianificazione che aggiungono tag direttamente a tutti i piani che soddisfano le condizioni specificate dalla regola. È quindi possibile utilizzare le regole di pianificazione per assegnare o modificare le priorità del piano in base a questi tag. Ad esempio, la seguente regola di pianificazione aumenta la priorità di tutti i piani per i quali sono stati impostati i tag specificati:
IF TAG IS eom THEN INCREASE PRIORITY