Fonctionnalités avancées : opérations de verrouillage de base de données


La base de données est une ressource partagée utilisée par plusieurs utilisateurs. Lorsque plusieurs utilisateurs accèdent aux données simultanément, plusieurs transactions accéderont aux mêmes données en même temps dans la base de données. Si les opérations simultanées ne sont pas contrôlées, cela peut entraîner des problèmes de lecture. et le stockage des données, détruisant la cohérence des données de la base de données. Par conséquent, le verrouillage est une technologie très importante pour réaliser le contrôle de la concurrence de la base de données.

Le processus de verrouillage de la base de données est : lorsqu'une transaction traite certaines données avant que l'objet ne soit exploité ; , une demande est envoyée au système pour le verrouiller. La transaction verrouillée a un certain contrôle sur l'objet de données. Avant que la transaction ne libère le verrou, les autres transactions ne peuvent pas mettre à jour l'objet de données.

Par conséquent, le module JDBC intègre la capacité de contrôle ; pour les verrous d'enregistrement de base de données dans les opérations de requête de base de données, appelé IDBLocker, et il est tout aussi simple à utiliser sous forme de paramètres !

Comprenez d'abord les types de verrous fournis par IDBLocker :

  • MySQL :

    IDBLocker.MYSQL : verrouillage au niveau de la ligne, seules les données qualifiées sont verrouillées, les autres processus attendent que la ressource soit déverrouillée avant de fonctionner

    ;
  • Oracle :

    IDBLocker.ORACLE : verrouillage au niveau de la ligne, seules les données qualifiées sont verrouillées, les autres processus attendent que les ressources soient déverrouillées avant de fonctionner

    IDBLocker.ORACLE_NOWAIT : verrouillage au niveau de la ligne, aucune attente de ressource n'est effectuée ; , Tant qu'il s'avère que certaines données de l'ensemble de résultats sont verrouillées, "Erreur ORA-00054" sera immédiatement renvoyée

  • SQL Server :

    IDBLocker.SQLSERVER_NOLOCK : Pas de verrouillage, pas de verrouillage lors de la lecture ; ou modifier des données ;

    IDBLocker.SQLSERVER_HOLDLOCK : maintenez le verrou et conservez ce verrou partagé jusqu'à la fin de la transaction entière sans le libérer en cours de route ;

    IDBLocker.SQLSERVER_UPDLOCK : modifiez le verrou pour garantir que plusieurs processus peuvent lire les données ; en même temps mais seul ce processus peut modifier les données ;

    IDBLocker.SQLSERVER_TABLOCK : verrouillage de la table, la table entière définit un verrou partagé jusqu'à la fin de la commande, garantissant que les autres processus ne peuvent que lire mais pas modifier les données ; .SQLSERVER_PAGLOCK : verrouillage de page ;

    IDBLocker.SQLSERVER_TABLOCKX : ligne Il s'agit d'un verrouillage de table, qui définira un verrou exclusif sur l'ensemble de la table pour empêcher d'autres processus de lire ou de modifier les données de la table

  • Autres bases de données ; :
  • peut être implémenté par vous-même via l'interface IDBLocker ;

  • ci-dessous Démontrez comment utiliser les verrous via un exemple de code :

Exemple de code 1 : transmettre les paramètres de verrouillage via les objets EntitySQL ; code deux : Transmettez les paramètres de verrouillage via Sélectionnez les objets de requête ; avec prudence et essayez d'éviter de verrouiller les tables pour éviter les blocages !