Que dois-je savoir avant de mettre en ligne une base de données InnoDB?

10

Ce qu'un administrateur de serveur ou de base de données doit savoir et faire avant de rendre une base de données InnoDB disponible.

Je pense à des choses comme la définition de valeurs correctes pour innodb_buffer_pool_sizeetinnodb_log_file_size

Alors, quelles choses simples pourriez-vous oublier de configurer pour que l'application utilisant la base de données fonctionne moins qu'optimale?

Jacco
la source

Réponses:

14

Vous devez réfléchir à certaines options de configuration avant de commencer.

Tant que vous n'utilisez pas du tout myisam, vous pouvez allouer en toute sécurité presque tout (gardez suffisamment pour que votre système d'exploitation fonctionne confortablement et suffisamment pour votre max_connections) votre mémoire innodb_buffer_pool. La bonne chose à propos d'InnoDB est qu'il gère presque tout le contenu de la mémoire seul, pas besoin de séparer les éléments comme les caches de requête, les tampons de clés, etc.

Je vous recommande d'activer innodb_file_per_table, tout simplement parce que cela facilite beaucoup la navigation dans le système de fichiers et la quantité d'espace dont les différentes tables et bases de données ont besoin. Vous aurez toujours besoin d'un fichier ibdata générique à usage interne InnoDB, mais vous pouvez simplement le définir comme 10M:autoextend. Pas besoin de définir beaucoup de fichiers de données innodb différents avec des tailles pré-allouées.

innodb_log_file_sizeet innodb_log_buffer_sizecombiné doit être plus grand que dix fois votre plus gros objet blob si vous en avez beaucoup de gros. Si vous ne le faites pas (et vous ne devriez pas [ 1 , 2 ]), il n'y a vraiment pas besoin de vous en préoccuper. Consultez MySQL Performance Blog pour un rapport détaillé sur la façon de calculer.

Et lorsque vous avez exécuté votre MySQL pendant un certain temps, vérifiez vos paramètres avec MySQLTuner ou MySQL Tuning Primer .

Pour un rapport plus détaillé, essayez mysqlreport et pour une surveillance en direct, consultez mytop .

Nils-Anders Nøttseter
la source
Une chose à retenir à propos de innodb_file_per_table est que les méthodes utilisées pour récupérer l'espace disque sont différentes. Avec les fichiers ibdata, vous pouvez récupérer de l'espace dans le tablespace en supprimant la fin de vos tables. Avec l'espace de fichiers de table individuel n'est pas récupéré en supprimant, il faut reconstruire la table avec optimiser la table pour retourner de l'espace au système de fichiers. Optimiser verrouille la table et peut donc entraîner des temps d'arrêt dans votre application.
mtinberg
2

Une légère "surprise" pour moi est que innodb utilise, par défaut, un fichier pour toutes les bases de données / tables. Par opposition aux tables MyISAM qui utilisent un répertoire par base de données et des fichiers par table / tableindex.

Cela peut être important si vous avez l'habitude de réduire les fichiers physiques sur une base de table (optimisez la table xxx)


la source