Comment savoir si une base de données MySQL processus est bloqué?
J'ai un long processus en cours d'exécution dans MySQL. Il a été en cours d'exécution pendant une semaine. Il y a une autre connexion, à un maître de réplication, mais j'ai arrêté esclave de traitement donc il n'y a effectivement rien d'autre à faire.
Comment puis-je savoir si ce processus est encore au travail? Je savais que cela allait prendre beaucoup de temps et c'est pourquoi je l'ai mis sur sa propre instance de base de données, mais c'est plus long que ce que je pensais. Évidemment, si il est encore en train de faire le travail, je ne veux pas le tuer. Si c'est zombied, alors je ne sais pas comment faire le travail qu'il est censé faire.
Il est en "Envoi des données" de l'état. La table est une InnoDB mais sans aucune FK références qui sont utilisées par la requête. Le InnoDB status affiche pas d'erreurs ou de verrous depuis la requête a commencé.
Toutes les pensées sont appréciés.
OriginalL'auteur user87843 | 2009-04-06
Vous devez vous connecter pour publier un commentaire.
Essayer "SHOW PROCESSLIST" pour voir ce qui est active.
Bien sûr, si vous le tuez, il peut alors vouloir prendre autant de temps à rouler en arrière.
Sont des tailles de fichier en train de changer? Aussi, vous devriez voir un certain effet dans le SHOW d'ÉTAT (dans divers wrrites et cachees).
OriginalL'auteur dkretz
Vous avez besoin de le tuer et de venir avec des indices mieux.
J'ai fait un travail pour un mec. A une table, avec environ 35 millions de lignes. Son processus de traitement par lots, comme la vôtre, avait été en cours d'exécution une semaine, avec aucune fin en vue. J'ai ajouté quelques indices, apporté quelques modifications à la commande et les méthodes de son processus de traitement par lots, et a obtenu le tout vers le bas à environ deux et demi heures. Sur une machine plus lente.
OriginalL'auteur tpdi
Compte tenu de ce que vous avez dit, il n'est pas coincé. Toutefois, il y a absolument aucune garantie que cela va réellement finir dans quelque chose ressemblant à un montant raisonnable de temps. L'ajout de indicies sera presque certainement aider, et selon le type de requête refactoring dans une série de requêtes que l'utilisation de tables temporaires pourrait éventuellement vous donner un énorme gain de performance. Je ne dirais pas attendre autour pour elle, peut-être à la fin.
OriginalL'auteur Donnie
Pour une meilleure performance sur une base de données de cette taille, vous pouvez consulter le document de base de données telles que mongoDB. Il faudra plus d'espace disque pour stocker la base de données, mais en fonction de votre schéma, vous pouvez obtenir de bien meilleures performances.
OriginalL'auteur tsmith