Je réalise des insertions plus grandes composées de quelques milliers de lignes dans mon application web actuelle et je voudrais m'assurer que personne ne puisse faire autre chose que lire la table, jusqu'à ce que les insertions aient été faites. Quelle est la meilleure façon de faire cela tout en gardant la disponibilité de lecture ouverte pour les utilisateurs non-administrateurs normaux?Verrouiller la table innoDB temporairement
Merci! Pourquoi ne pas simplement faire l'insertion dans une grande transaction?
Salut A1ex07. Merci beaucoup. Est-ce une solution temporaire qui doit être appelée sur chaque requête (ce qui serait génial) ou est-elle permanente? Merci! – Industrial
Cela dépend de la logique métier de votre application. Le niveau d'isolation sérialisable garantit qu'aucune autre transaction ne peut modifier les données susceptibles d'affecter la transaction en cours. Par exemple, après l'exécution de SELECT count (*) FROM table1 WHERE field1 <10, les autres transactions ne peuvent pas insérer/supprimer/mettre à jour les enregistrements de table1 si elle modifie le résultat de la requête. Donc, si vos INSERTS ne doivent pas être exécutés dans un ordre particulier et que chaque requête suivante ne dépend pas de la précédente, vous pouvez exécuter chaque requête dans une transaction séparée ... – a1ex07