SKIP LOCKED
Ne pas tenir compte du blocage.
La proposition SKIP LOCKED
fait en sorte que le moteur saute les enregistrements verrouillés par d’autres transactions, à la place,d’attendre ou de provoquer des erreurs lorsqu’un conflit se produit.
Cette fonctionnalité est utile pour mettre en œuvre des files d’attente de travail, dans lesquelles un ou plusieurs processus envoient des données à une table et génèrent un événement, tandis que les processus de travail écoutent ces événements et lisent/suppriment des éléments de la table.En utilisant SKIP LOCKED
, plusieurs threads de travail peuvent obtenir des éléments de travail exclusifs de la table sans conflit.
Note
|
Si la phrase |
Voir aussi: SELECT … SKIP LOCKED
,UPDATE … SKIP LOCKED
.
SKIP LOCKED
pour organiser une file d’attentePréparation des métadonnées.
create table emails_queue (
subject varchar(60) not null,
text blob sub_type text not null
);
set term !;
create trigger emails_queue_ins after insert on emails_queue
as
begin
post_event('EMAILS_QUEUE');
end!
set term ;!
Envoi de données par une application ou un sous-programme
insert into emails_queue (subject, text)
values ('E-mail subject', 'E-mail text...');
commit;
L’application cliente peut écouter l’événement EMAILS_QUEUE
pour envoyer des courriels à l’aide de cette requête :
delete from emails_queue
rows 10
skip locked
returning subject, text;
Plus d’une instance d’une application peut fonctionner, par exemple pour l’équilibrage de la charge.