Mysql est configuré avec maître-esclave et la base de données esclave est utilisée pour interroger les instructions lentes. Si la table est verrouillée pendant la requête, la base de données maître la copiera-t-elle toujours ? Ou attendra-t-il que la requête lente soit terminée avant de la copier ?
La synchronisation maître-esclave est effectuée via binlog. La bibliothèque esclave dispose de deux threads, l'un est responsable de la réception des journaux binlog et l'autre est responsable de l'analyse des journaux et de l'écriture des données dans la bibliothèque. Par conséquent, la synchronisation maître-esclave présente généralement un certain retard.
En ce qui concerne la question des verrous en lecture-écriture, les verrous en écriture sont exclusifs et les verrous en lecture peuvent être obtenus plusieurs fois. Dans Innodb, les verrous sont divisés en verrous de table, verrous de ligne et verrous d'espacement. Si une opération d'insertion nécessite le verrouillage de la table et qu'une requête verrouille une ligne de la table, vous devrez naturellement attendre.
Veuillez réfléchir à nouveau attentivement à la question.
D'après ma compréhension de la question, êtes-vous sûr que la bibliothèque maître réplique la bibliothèque esclave en temps réel ? Il y a quelque chose qui ne va pas dans cette logique.
Réplication maître-esclave trompeuse. Normalement, la bibliothèque esclave n'autorise pas les opérations d'écriture autres que le processus de réplication. Les opérations de requête dans la bibliothèque esclave ne bloqueront pas le processus d'écriture de réplication. Bien sûr, si vous devez supprimer manuellement le verrou. la bibliothèque principale synchronise les données de la bibliothèque esclave avec les enregistrements verrouillés, elle attendra le verrouillage sur la bibliothèque esclave, donc les actions d'écriture de la bibliothèque esclave doivent être strictement contrôlées. Tous sauf l'administrateur sont en lecture seule
.