Requêtes SELECT non verrouillables dans MySQL
Dans MySQL, des verrouillages fréquents lors des opérations SELECT peuvent survenir lorsque les tables sont modifiées simultanément. Pour atténuer ce problème, envisagez d'utiliser des techniques permettant des lectures non verrouillables.
Utilisation de READ UNCOMMITTED
Une approche consiste à définir le niveau d'isolement des transactions sur READ UNCOMMITTED, ce qui permet des lectures sans acquérir de verrous. Cependant, cette option peut ne pas convenir aux esclaves car elle compromet l'intégrité des données.
L'équivalent SQL de AVEC (NOLOCK)
Pour l'équivalence avec le AVEC (NOLOCK) clause dans Microsoft SQL Server, MySQL propose un processus en plusieurs étapes :
Démarrez la transaction avec READ UNCOMMITTED isolement :
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Effectuez la requête SELECT :
SELECT * FROM TABLE_NAME;
Réinitialisez le niveau d'isolement des transactions sur LECTURE RÉPÉTABLE :
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Requête non verrouillable améliorée Exécution
Michael Mior a proposé une version améliorée de l'exécution de requêtes non verrouillables :
Définissez le niveau d'isolement des transactions sur READ UNCOMMITTED :
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
Effectuer le SELECT requête :
SELECT * FROM TABLE_NAME ;
Valider la transaction :
COMMIT ;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!