Optimale MySQL-configuration (mon.cnf)
Ce qui suit est mon défaut de production de MySQL fichier de configuration (my.cnf
) pour un pur UTF-8 installation avec InnoDB comme le moteur de stockage par défaut.
[server]
bind-address=127.0.0.1
innodb_file_per_table
default-character-set=utf8
default-storage-engine=innodb
Le programme d'installation effectue les opérations suivantes:
- Se lie à localhost:3306 (loopback) au lieu de la valeur par défaut *:3306 (toutes les interfaces). Fait pour augmenter la sécurité.
- Met en place un espace de table par table. Fait pour augmenter la maintenabilité.
- Définit le jeu de caractères par défaut est UTF-8. Fait pour faciliter l'internationalisation par défaut.
- Définit le moteur de stockage par défaut pour InnoDB. Fait pour permettre au niveau de la ligne de verrouillage par défaut.
Supposons que vous pourrait améliorer encore plus l'installation par l'ajout d'un maximum de trois (3) paramètres de configuration. Qui ajouteriez-vous et pourquoi?
Une amélioration dans ce contexte signifie une amélioration de la performance, une amélioration de la fiabilité, de facilité d'utilisation/facilité d'augmenter la maintenabilité. Vous pouvez supposer que la machine qui exécute l'instance MySQL avons 1000 MO de RAM.
Au moins avec MySQL 5.5, envisager de changer default-character-set -> character_set_server
OriginalL'auteur knorv | 2009-07-22
Vous devez vous connecter pour publier un commentaire.
À cache plus de données:
Si vous écrivez beaucoup de données:
pour éviter trop de journal de commutation.
Il n'y a pas de troisième j'ajouterais dans tous les cas, toutes les autres dépendent.
OriginalL'auteur Quassnoi
Allouer plus de mémoire que la valeur par défaut de 8M à InnoDB (à l'aide de innodb_buffer_pool_size) est certainement une amélioration. Quant à la valeur, sur un serveur dédié base de données comme la vôtre, vous pouvez définir jusqu'à 80% de votre RAM et plus vous augmentez cette valeur, moins les interactions avec le disque dur sera. Juste pour donner mon grain de sel, je tiens à mentionner que vous pouvez avoir du boost de performance en jouant sur la valeur de
innodb_flush_log_at_trx_commit
, toutefois sacrifier l'ACIDE conformité... Selon la Manuel MySQL:Alors vous risquez de perdre les données qui n'ont pas été correctement enregistrés dans la base de données due à une panne ou un dysfonctionnement. Toujours selon le manuel MySQL:
Donc, je dirais:
Enfin, si vous avez un fort taux de connexion (par exemple, si vous avez besoin de configurer MySQL pour soutenir une application web qui accède à la base de données), alors vous devriez envisager d'augmenter le nombre maximal de connexions à quelque chose comme 500. Mais puisque c'est quelque chose de plus ou moins frivoles et bien connu, donc je voudrais mettre l'accent sur l'importance de
back_log
pour assurer la connexion.J'espère que ces informations vous aideront à optimiser votre serveur de base de données.
OriginalL'auteur Pantelis Sopasakis
Augmentation de la innodb pool de mémoire tampon de taille, aussi grand que vous le pouvez pratiquement faire:
Vous voudrez aussi quelques clés de la mémoire tampon de l'espace pour les tables temporaires:
Autres dépendra de ce que vous faites avec la base de données, mais table_cache ou query_cache_size seraient un couple d'autres potentiels.
key_buffer_size
pertinents pourMyISAM
seulement?il est, mais je pense que MySQL utilise toujours MyISAM pour les tables temporaires, si vous avez encore besoin de quelques clés de la mémoire tampon de l'espace pour cela (du moins c'est ce que j'ai entendu). J'ai peut-être tort que de bien.
OriginalL'auteur Eric Petroelje