2011-04-19 3 views
3

Le internal locking of MySQL est-il suffisant pour un site Web de petite à moyenne taille? Mes tables sont MyISAM. Il peut y avoir quelques centaines de personnes qui tapent simultanément sur une table spécifique avec SELECT et INSERT. Aucune des requêtes INSERT/UPDATE ne se chevaucherait. Autrement dit, aucun utilisateur ne mettra à jour le même ID de commentaire. INSERT's/UPDATE seraient des opérations uniques --- il n'y aurait pas de lecture de données et d'effectuer des opérations supplémentaires au sein de la même requête. En particulier, je suis en train de mettre en place un système de commentaire/chat pour mon site web. Au pire, il pourrait y avoir quelques centaines de personnes exécutant une instruction SELECT sur les tables de commentaire/discussion afin de lire de nouveaux messages. En ce qui concerne INSERT, il pourrait y avoir 100 (?) Personnes différentes essayant d'INSÉRER un nouveau commentaire à tout moment.Quand LOCK TABLES dans MySQL (tables MyISAM)?

J'ai trouvé this article dans une autre question sur SO, et il indique que LOCK TABLES n'est "jamais requis pour des opérations d'insertion, de mise à jour ou de suppression autonomes." Est-ce une bonne pratique pour la quantité de trafic DB que je pourrais avoir? TIA pour tout conseil.

Répondre

0

La seule forme de verrouillage des tables MyISAM est le verrouillage des tables. L'idée est qu'ils l'ont conçue assez rapidement pour que personne d'autre n'ait besoin d'y accéder pendant que ça fonctionne. Droit - YMM certainement V. Mais pour la plupart des sites Web de petite à moyenne taille, c'est bien. Pour l'intance, c'est ce que WordPress utilise.

+0

Serait-il préférable de mettre en place une forme de verrouillage maintenant --- anticipant un plus grand public d'utilisateurs? Je crois comprendre que les tables MyISAM permettent des requêtes simultanées (INSERT/UPDATE/SELECT/etc.), Et qu'une variable système MySQL gère ces événements simultanés ([concurrent_insert] (http://dev.mysql.com/doc /refman/5.0/en/server-system-variables.html#sysvar_concurrent_insert)). Cette variable traite de la façon dont les tables MyISAM gèrent les trous (depuis DELETES/etc.) Au milieu des tables. Ces «trous» peuvent-ils être une source de corruption des données s'ils ne sont pas gérés correctement? TIA. – broncozr

0

Le verrouillage est probablement quelque chose dont vous devez vous inquiéter si les lignes sont affichées et édité en même temps. Ne vous inquiétez pas du verrouillage pour ce que vous faites - ce n'est pas seulement une bonne pratique de le faire, l'utilisation de verrous ici nuirait à la performance.