J'ai regardé dans my.ini et j'ai vu divers paramètres par défaut. Ma base de données fonctionne sur un seul PC autonome. Je veux optimiser les performances d'InnoDB et de MySQL en général pour les performances. Il n'y a aucune contrainte d'espace disque. Quels paramètres par défaut dois-je modifier pour optimiser les performances, la fiabilité et les sauvegardes ponctuelles possibles [haute disponibilité].
Édité
À l'heure actuelle, chaque fois que j'exécute "Optimiser les tables" via Maintenance sur l'administrateur MySQL, cela montre:
Le tableau ne prend pas en charge l'optimisation, recréer + analyser à la place
sur toutes les tables. Toutes mes tables sont InnoDB, mais pourquoi ne prennent-elles pas en charge Optimiser?
Réponses:
La façon de régler InnoDB est centrée sur
Voici une formule que j'ai utilisée au cours des 5 dernières années pour calculer le pool de tampons InnoDB en fonction de l'espace disque utilisé par les pages de données et d'index InnoDB :
Bien sûr, j'ai dit une fonction de la mémoire disponible et de l'espace disque actuellement utilisé par InnoDB. À partir d'ici, utilisez simplement le bon sens. LE NOMBRE RECOMMANDÉ DE LA REQUÊTE CI-DESSUS NE DEVRAIT PAS DÉPASSER 75% DE LA RAM INSTALLÉE !!! C'est la règle empirique la plus simple pour dimensionner le pool de tampons InnoDB.
Vous devez également définir innodb_flush_method sur O_DIRECT car il fournira des écritures synchrones stables d'InnoDB. J'ai également écrit un article sur la façon d'optimiser le stockage sur disque pour InnoDB .
En ce qui concerne le message, la table ne prend pas en charge l'optimisation, en recréant + analysant à la place , la raison pour laquelle vous obtenez ce message d'erreur est le fait que le moteur de stockage est InnoDB. Mécaniquement, OPTIMIZE TABLE copie simplement la table dans une table temporaire et exécute ANALYZE TABLE .
En réalité, ANALYZE TABLE contre InnoDB est complètement inutile. Même si vous avez exécuté ANALYZE TABLE sur une table InnoDB, le moteur de stockage InnoDB effectue des plongées dans l'index pour les approximations de cardinalité maintes et maintes fois, détruisant ainsi les statistiques que vous venez de compiler. En fait, Percona a effectué des tests sur ANALYZE TABLE et est également arrivé à cette même conclusion .
Voici d'autres articles que j'ai publiés au cours de l'année sur InnoDB Tuning
la source
Voici un article plus ancien sur les variables importantes à «réglage grossier». Le plus important étant probablement
innodb_buffer_pool_size
Je recommanderais fortement la mise à niveau vers MySQL 5.5 (si vous ne l'utilisez pas déjà). Ils ont apporté plusieurs modifications aux performances d'InnoDB. Ils fournissent même une section générale sur la façon d'optimiser pour InnoDB maintenant qu'il s'agit du moteur par défaut: http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb.html
En ce qui concerne les sauvegardes ponctuelles, vous voudrez regarder le journal binaire . La base de l'activation est de définir la
log-bin
variable dans votre my.cnfla source
Optimiser vient dans beaucoup de couleurs.
Je pense que votre première étape devrait être de décider ce que "optimiser" signifie pour vous. Pour certaines personnes, cela signifie "requêtes SELECT les plus rapides". Pour d'autres, cela signifie "le meilleur équilibre entre les performances SELECT et les performances INSERT". Pour d'autres encore, "la performance INSERT la plus rapide".
Vous devez décider quels sont vos critères et comment vous allez savoir si vos modifications vous aident avant de commencer le réglage.
Ensuite, placez vos fichiers de configuration et vos options de démarrage sous contrôle de version et commencez à expérimenter. Documentez les conseils que vous suivez et où vous les avez trouvés. (Les conseils changent au fil du temps, à mesure que la base de code et le matériel changent.) Mettez également ces documents sous contrôle de version.
la source