Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation maximale de la mémoire MySQL

L'utilisation maximale de la mémoire de MySQL dépend beaucoup du matériel, de vos paramètres et la base de données elle-même.

Matériel

Le matériel est la partie évidente. Plus il y a de RAM, plus les disques sont joyeux et rapides ftw . Ne croyez pas ces lettres de nouvelles mensuelles ou hebdomadaires cependant. MySQL n'évolue pas de manière linéaire - pas même sur le matériel Oracle. C'est un peu plus compliqué que ça.

L'essentiel est :il n'y a pas de règle générale pour ce qui est recommandé pour votre Configuration MySQL. Tout dépend de l'utilisation actuelle ou des projections.

Paramètres et base de données

MySQL propose d'innombrables variables et commutateurs pour optimiser son comportement. Si vous rencontrez des problèmes, vous devez vraiment vous asseoir et lire le (putain) manuel.

Quant à la base de données -- quelques contraintes importantes :

  • moteur de table (InnoDB , MyISAM , ...)
  • taille
  • indices
  • utilisation

La plupart des conseils MySQL sur stackoverflow vous indiqueront environ 5 à 8 paramètres dits importants. Tout d'abord, tous n'ont pas d'importance - par ex. allouer beaucoup de ressources à InnoDB et ne pas utiliser InnoDB n'a pas beaucoup de sens car ces ressources sont gaspillées.

Ou - beaucoup de gens suggèrent d'augmenter le max_connection variable - eh bien, ils ne savent pas que cela implique également que MySQL allouera plus de ressources pour répondre à ces max_connections -- si jamais nécessaire. La solution la plus évidente pourrait être de fermer la connexion à la base de données dans votre DBAL ou de réduire le wait_timeout pour libérer ces fils.

Si vous me comprenez, il y a vraiment beaucoup de choses à lire et à apprendre.

Moteurs

Les moteurs de table sont une décision assez importante, beaucoup de gens les oublient tôt et se retrouvent soudainement à se battre avec un MyISAM de 30 Go table qui verrouille et bloque toute leur application.

Je ne veux pas dire MyISAM craint , mais InnoDB peut être modifié pour répondre presque ou presque aussi vite que MyISAM et offre des choses telles que le verrouillage de ligne sur UPDATE alors que MyISAM verrouille toute la table lors de l'écriture.

Si vous êtes libre d'exécuter MySQL sur votre propre infrastructure, vous pouvez également consulter le serveur percona car parmi les nombreuses contributions d'entreprises comme Facebook et Google (ils savent vite), cela inclut également le remplacement direct de Percona pour InnoDB , appelé XtraDB .

Voir mon essentiel pour la configuration de percona-server (et -client) (sur Ubuntu) :http://gist.github .com/637669

Taille

La taille de la base de données est très, très importante - croyez-le ou non, la plupart des gens sur les Intarwebs n'ont jamais géré une configuration MySQL importante et intense en écriture, mais celles-ci existent vraiment. Certaines personnes trolleront et diront quelque chose comme "Utilisez PostgreSQL!!!111", mais ignorons-les pour l'instant.

L'essentiel est le suivant :à en juger par la taille, une décision concernant le matériel doit être prise. Vous ne pouvez pas vraiment faire fonctionner rapidement une base de données de 80 Go avec 1 Go de RAM.

Indices

Ce n'est pas le cas :plus il y en a, mieux c'est. Seuls les index nécessaires doivent être définis et l'utilisation doit être vérifiée avec EXPLAIN . Ajoutez à cela que MySQL EXPLAIN est vraiment limité, mais c'est un début.

Configurations suggérées

À propos de ces my-large.cnf et my-medium.cnf fichiers - je ne sais même pas pour qui ils ont été écrits. Roulez vous-même.

Introduction au réglage

Un bon début est le l'introduction au réglage . C'est un script bash (indice :vous aurez besoin de Linux) qui prend la sortie de SHOW VARIABLES et SHOW STATUS et l'enveloppe dans une recommandation utile, espérons-le. Si votre serveur a fonctionné un certain temps, la recommandation sera meilleure car il y aura des données sur lesquelles les baser.

L'amorce de réglage n'est cependant pas une sauce magique. Vous devriez toujours lire toutes les variables qu'il suggère de changer.

Lecture

J'aime vraiment recommander le mysqlperformanceblog . C'est une excellente ressource pour toutes sortes de conseils liés à MySQL. Et ce n'est pas seulement MySQL, ils en savent aussi beaucoup sur le bon matériel ou recommandent des configurations pour AWS, etc. Ces gars ont des années et des années d'expérience.

Une autre excellente ressource est planet-mysql , bien sûr.