Je n'ai trouvé d'autres postes similaires à cela, mais voulait un peu d'information supplémentaire sur ces options de mysqldump. J'ai compris que les tables --single-transaction et --lock-sont des opérations mutuellement exclusives. Voici mes questions concernant ces options.--single-transaction --lock-tables options de mysqldump- que se passe-t-il en interne?
a) Supposons que j'ai choisi d'utiliser l'option --lock-tables. Dans ce cas, mysqldump acquiert un verrou de lecture sur toutes les tables. Donc, tout autre processus essayant d'écrire dans les tables passera dans un état bloqué (attente). Mais si le mysqldump prend vraiment beaucoup de temps, est-ce que les processus en attente continueraient à attendre indéfiniment?
J'ai essayé cette expérience pour exemple- j'ai écrit de programme JDBC (Java) à une table de base de données MySQL appelée MY_TEST. Je me suis connecté à la console mysql et j'ai émis "LOCK TABLES MY_TEST READ;" commande manuellement. Le processus Java s'est donc bloqué en attendant que le verrou soit libéré. Ma question est s'il y aurait un délai de connexion ou un problème si le verrou de lecture ne se libère pas pendant longtemps? J'ai attendu deux minutes et n'ai remarqué aucune erreur et le processus Java s'est poursuivi normalement une fois que le verrou a été libéré en utilisant la commande "UNLOCK tables". Ce comportement est-il spécifique au pilote java mysql ou puis-je espérer la même chose d'un programme C utilisant le pilote mysql?
b) Ma deuxième question porte sur l'option --single transaction. Supposons que j'ai 10 tables InnoDB, dont 3 tables sont liées entre elles (en utilisant FK) et les autres étant indépendantes mais utilisant toujours le moteur InnoDB. Est-ce qu'une seule transaction s'applique uniquement aux trois tables qui sont liées entre elles par FK? ou puis-je m'attendre à ce que l'état des 7 tables indépendantes soit exactement comme c'était le cas lorsque les 3 tables interdépendantes ont été déversées.