Je cherche de l'aide pour comprendre ce qui se passe lorsque la ligne de commande suivante est exécutée:
root@prodn$ service mysqld stop
Oui, il arrête le serveur MySQL, donc l'accès n'est plus disponible jusqu'à ce que le service soit redémarré. Cependant, plus spécifiquement, y a-t-il autre chose qui se produit lorsque le service est arrêté? Pardonnez mon novice ici mais quand mysqld est redémarré, cela signifie-t-il que les journaux ont été vidés, de la mémoire libérée, des caches vidés, etc.?
La raison pour laquelle je demande est la suivante:
Notre base de données d'entrepôt de données est une base de données MySQL et au cours des 4 derniers mois, cela a pris en moyenne 8,5 heures.
Mercredi dernier, j'ai arrêté le service mysql, puis l'ai redémarré après 30 minutes. Depuis, je commence à remarquer une amélioration massive des performances globales - les processus SELECT / INSERT / UPDATE / DELETE étaient plus efficaces. DW a terminé presque 4 heures plus tôt avec le même nombre de lignes de données
Cependant, chaque jour qui passe, 15 à 20 minutes s'ajoutent en quelque sorte à l'heure d'arrivée. Donc, je pense que je devrai peut-être redémarrer le service chaque semaine.
Y a-t-il une explication à ce comportement? Je ne sais pas quelles autres questions sont pertinentes mais ce serait génial de savoir ce qui se passe lorsque le mysqld
service redémarre.
Quelqu'un peut-il nous éclairer sur ce sujet
la source
Réponses:
Lorsque vous émettez
service mysql stop
, il se passe beaucoup plus que simplement couper la connectivité DB. Le lien dans le commentaire de @ethrbunny explique déjà ce qui se passe.Je voudrais me concentrer sur un aspect particulier: le pool de tampons InnoDB. InnoDB doit vider les pages sales du pool de tampons InnoDB. Si vous voulez savoir combien, exécutez ceci avant l'arrêt:
Cela vous indiquera la quantité de données à vider du pool de tampons InnoDB.
Veuillez garder à l'esprit qu'InnoDB a de nombreuses pièces mobiles dans l'espace disque logique du système (le fichier
ibdata1
). Cliquez ici pour voir la représentation graphique de l'ensemble de l'infrastructure InnoDB .Certaines informations transactionnelles sont écrites de manière à ce que la récupération après incident soit effectuée lorsque vous exécutez
service mysql start
.OPTIONNEL
Vous pouvez obtenir toutes les données vidées et toutes les transactions proprement validées à partir d'ibdata1 et des journaux de transactions (
ib_logfile0
,ib_logfile1
) en exécutant ceavant de courir
Essaie !!!
MISE À JOUR 2013-04-24 07:17 EDT
Puisque vous avez MyISAM comme moteur de stockage principal, la seule chose qui se produit est le vidage des modifications d'index dans tous les
.MYI
fichiers dont les modifications sont en attente.Je voudrais également recommander que la prochaine fois que vous fermez mysqld, exécutez ceci au préalable dans une autre session:
et regardez les messages qui passent et voyez-le, il vous indique ce que mysqld fait avec n'importe quel moteur de stockage. Si vous n'avez absolument aucune table InnoDB en cours d'utilisation, pensez à désactiver InnoDB avec
car cela permettra un démarrage plus rapide et éventuellement un arrêt plus rapide.
la source