Maison >base de données >tutoriel mysql >Comment sélectionner des données dans une base de données esclave MySQL sans verrouillage ?

Comment sélectionner des données dans une base de données esclave MySQL sans verrouillage ?

DDD
DDDoriginal
2024-12-13 05:02:09597parcourir

How to Select Data from a MySQL Slave Database Without Locking?

Sélection de données sans verrouillage dans MySQL

Lors de l'interrogation d'une table qui est activement modifiée par des événements, il est possible de rencontrer des verrous de table, qui peuvent performances d’impact. Existe-t-il un moyen d'effectuer une instruction select dans MySQL qui ne provoque pas de tels verrous ?

Solution pour les bases de données esclaves

La solution mentionnée dans l'article intitulé "MYSQL AVEC NOLOCK" n'est pas applicable dans ce cas car il s'agit d'une base de données esclave. De plus, définir le niveau d'isolement des transactions sur READ-UNCOMMITTED entraînera une erreur sur une base de données esclave configurée pour la journalisation binaire basée sur STATEMENT.

Méthodologie spécifique à MySQL

Pour éviter le verrouillage lors de la sélection de données sur une base de données esclave MySQL, vous pouvez utiliser l'approche suivante :

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT COUNT(online.account_id) cnt from online;
COMMIT;

Cette méthode définit temporairement l'isolation des transactions niveau à READ UNCOMMITTED, ce qui permet à l'instruction select de se poursuivre sans obtenir de verrous. Cependant, il est important de se rappeler que ce paramètre ne peut être utilisé que dans une transaction suivie d'une instruction COMMIT.

Suggestion d'amélioration

Comme alternative, vous pouvez envisager d'utiliser la syntaxe suivante suggérée par Michael Mior :

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT COUNT(online.account_id) cnt from online;
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn