J'ai cette table très simple avec seulement 35 lignes sur 5 colonnes simples (clé primaire sur id auto incrément, titre (varchar), un bool, et 2 datetime). Comme nous travaillons en équipe, nous importons des données de Google Docs, nous les reformulons en SQL pour faire un TRUNCATE->LOCK TABLE WRITE->INSERT INTO (plusieurs lignes)->UNLOCK TABLE en une fois. Sur d'autres tables plus grandes et plus compliquées, cela fonctionne très bien, l'ensemble du processus se termine en une seconde. Mais sur celle-ci, il faut toujours 5 à 7 minutes pour terminer. Le problème est que cela déclenche des verrous sur d'autres tables, et le système est pratiquement hors service pendant cette période.
Pendant que le système est en panne, j'ai capturé la >SHOW FULL PROCESSLIST ; et j'ai découvert que : - le TRUNCATE prend beaucoup de temps, avec le code d'état "checking permissions" pendant plus de 200 secondes. - pour une raison quelconque, lorsque ce problème se produit, le journal httpd affiche un "server seems busy..." et Apache se bloque sur toutes les instances frontales.
J'ai essayé de chercher des cas similaires sur le web en vain. Cela nous sauverait vraiment la vie si quelqu'un pouvait nous donner un avis utile sur ce cas... Merci !
- Serveur DB : m2.2xlarge instance @ EC2
- Serveurs frontaux : instances m1.large @ EC2
- Version de MySQL : 5.0.77
- Client GUI : phpmyadmin 3.2.3
- Type de stockage DB : MyISAM