Latches & Enqueues /*+ Introduction */

Latches et enqueues sont au coeur des algorithmes d’Oracle et sont, sinon l’origine de tous types de contentions, la solution que le SGBD met en oeuvre pour les adresser :

  • Comment s’assurer que le vous ne lisez pas un bloc pendant qu’il est modifié par un autre utilisateur ?
  • Comment garantir que 2 processus n’écrivent pas leur données au même endroit dans la mémoire partagée ?
  • Comment mettre en corrélation les différentes modifications liées à une transaction pour les effacer en cas de crash du processus ?
  • Comment garantir qu’un verrou sur une ligne sera bien respecté par les autres utilisateurs ?

Voici quelques questions parmi les milliers qu’Oracle adresse avec des latches et des enqueues.

Comprendre le fonctionnement de ces structures ainsi que les raisons de leurs manifestations est donc essentiel pour comprendre pourquoi vos bases de données, même si elles sont performantes, ne permettront pas d’absorber plus de charge. C’est également essentiel pour faire la corrélation entre les statistiques et attentes (waits) des bases de données avec leur paramétrage, le fonctionnement du système d’exploitation ou celui de l’application.

En outre certains enqueues (TM, SQ…) ont, au même titre que les échanges de blocs inter-instances, des impacts importants sur le fonctionnement de RAC. Pour vous en persuader, vous serez surpris d’observer que le scripts ci-dessous ne s’éxécute pas dans les mêmes délais sur toutes les instances de votre RAC (faites l’opération plusieurs fois pour vous assurer de la reproductibilité des résultats – Si vous n’observez pas le phénomène parce que vous avez un interconnect performant, exécutez le script de manière concurrente sur plusieurs instances et comparez les temps « elapsed ») :

set timing on

begin
for i in 1..50000 loop
lock table dual in exclusive mode;
commit;
end loop;
end;
/

Voilà, si ça intéresse quelqu’un (autre que toi maman !), ce post peut-être le premier d’une série plus longue sur ce que sont latches, enqueues, leurs types, leurs causes et comment les adresser. Qu’en pensez-vous ?

-GarK!

1 réflexion sur “Latches & Enqueues /*+ Introduction */”

  1. Salut,

    moi je suis preneur !

    C’est un sujet qui a toujours été un peu « flou » pour moi 🙂

Les commentaires sont fermés.