J'ai lu plusieurs fois que MySQL effectuera des verrous de niveau table sur les tables MyISAM pendant les insertions. C'est correct avec moi si ce verrou est utilisé pour la sérialisation des commandes d'insertion/suppression seulement. Les insertions sont très rares sur mon site de toute façon. Mais ce verrouillage bloquera-t-il toutes les requêtes Select jusqu'à la fin de la commande d'insertion?Qu'est-ce que les verrous de verrouillage au niveau de la table lors des insertions dans MySQL?
Répondre
Un verrou d'écriture bloque toutes les sélections qui utilisent les tables que vous avez verrouillé.
Pour accomplir les niveaux d'isolement dans le serveur MySQL, vous pouvez changer le mode d'isolation de session en utilisant la commande SET SESSION. L'instruction ci-dessus fonctionnera comme WITH (nolock), c'est-à-dire READ UNCOMMITTED data. Vous pouvez également définir le niveau d'isolation globalement pour toutes les connexions.
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
Il existe deux variables système liées au niveau d'isolement dans le serveur MySQL. La première instruction renvoie le niveau d'isolement global, la seconde renvoie uniquement la session en cours.
Dans SQL Server, vous pouvez également définir le niveau d'isolation au niveau de la transaction comme ceci.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
Reade plus @:
Il utilise MyISAM, ce qui n'est pas transactionnel. Donc ça ne marchera pas du tout. – derobert
- 1. Insérer des insertions dans la même table
- 2. (Courant) NHibernate - Inhertiance au niveau de l'objet, mais pas au niveau de la table
- 3. Obtention d'un verrouillage SELECT: s dans MySQL lors de l'utilisation de MyISAM
- 4. Techniques pour se débarrasser du verrouillage de bas niveau
- 5. Interrogation des schémas de verrouillage de table dans T-SQL
- 6. Comment empêcher les insertions JPA de verrouiller une table de base de données?
- 7. Modifier les verrous de clavier en Python
- 8. Horodatage MySQL uniquement lors de la création
- 9. Présentation des insertions de base de données
- 10. Comment éviter que Team Foundation ne débloque des verrous
- 11. Suppression des verrous de fichier
- 12. Est-ce que SQL Server 2008 prend en charge readonly au niveau de la table?
- 13. Verrouillage de la chaîne via le verrouillage
- 14. rechercher si le verrouillage de table est désactivé
- 15. Verrouillage dans SQL Server
- 16. Sélectionnez les données selon le directeur et le niveau des employés dans la structure de table MySQL
- 17. Les insertions SQL simultanées dans la même table sont-elles transactionnelles?
- 18. Verrous NSPR avec timeout
- 19. Comment optimiser une table pour les insertions rapides seulement?
- 20. drop index au niveau de la partition
- 21. Fréquence des insertions
- 22. Enregistrement de l'heure GMT dans la table mySQL
- 23. (Plus) verrouillage efficace lors de la rotation des noeuds dans l'arbre binaire fileté
- 24. Comment les requêtes syndicales de la même table dans MySQL
- 25. Mettre en œuvre un accès au niveau utilisateur/groupe d'utilisateurs à des enregistrements dans la base de données (au niveau de l'application)
- 26. Exception au niveau de la session
- 27. Sécurité au niveau de la méthode dans WCF
- 28. Affichage d'une liste de verrous dans Coldfusion
- 29. Déclaration des variables réutilisées au niveau de la classe ou de la méthode lorsqu'elles sont requises
- 30. Verrouillage des membres de la classe dans PHP
une insertion d'un nouvel enregistrement sur myisam (à la fin de la table) ne verrouille pas toute la table. –
Oui, c'est le cas, s'il n'y a pas de trous dans le fichier de données (par exemple, pas de suppression depuis le dernier optimiser). http://dev.mysql.com/doc/refman/5.0/en/concurrent-inserts.html décrit le comportement en détail. – derobert