Le clausole HIGH_PRIORITY e LOW_PRIORITY
InnoDB/XtraDB usa il locking a livello di riga per garantire l'integrità dei dati. Tuttavia alcuni Storage Engine (come MEMORY, MyISAM, Aria, MERGE) acquisiscono i lock sull'intera tabella per evitare i conflitti. Questi Storage Engine usano due code distinte per ricordare le istruzioni in attesa: una per le SELECT e l'altra per i comandi di scrittura (INSERT, DELETE, UPDATE). Per default, quest'ultima ha una priorità più elevata.
Per dare alle operazioni di scrittura una priorità più bassa, è possibile impostare la variabile low_priority_updates a ON. Questa opzione esiste sia a livello globale sia a livello di sessione, e può essere impostata sia all'avvio sia con l'istruzione SET.
Quando le istruzioni di scrittura impostano troppi lock a livello di tabella, alcune SELECT in attesa vengono eseguite. Il numero massimo dei lock in scrittura che possono essere acquisiti prima che ciò accada è determinato dalla variabile max_write_lock_count, che è dinamica.
Se le istruzioni di scrittura hanno una priorità più alta (come da default), la priorità dei singoli comandi (INSERT, REPLACE, UPDATE, DELETE) può essere abbassata attraverso l'attributo LOW_PRIORITY, e la priorità delle istruzioni SELECT può essere elevata tramite l'attributo HIGH_PRIORITY. Inoltre, LOCK TABLES supporta un attributo LOW_PRIORITY per i lock in scrittura.
Se le istruzioni di lettura hanno una priorità più alta, la priorità di una INSERT può essere elevata con l'attributo HIGH_PRIORITY. Tuttavia la priorità degli altri comandi non può essere elevata individualmente.
L'uso di LOW_PRIORITY o HIGH_PRIORITY per le INSERT impedisce l'uso delle INSERT concorrenti.