Question

J'ai une seule base de données d'environ 4,5 Go en cours d'exécution sur un serveur avec 8 Go de RAM. La grande majorité des tables sont MyISAM (environ 4.3Go), mais je suis bientôt va être convertir certains d'entre eux InnoDB. (Il va être un processus lent, en se concentrant sur les la plupart des tables d'écriture intensive au début).

Y at-il quelque chose de mal avec l'exécution d'un serveur dédié où les deux types de moteurs de stockage existent?

Était-ce utile?

La solution

Il n'y a rien mauvais avec l'aide de moteurs de stockage multiples sur la même machine physique, aussi longtemps que vous comprenez les avantages et les inconvénients de chacun. Il y a des considérations de performance, les limitations des fonctions et des cas d'utilisation pour tous les types de stockage de plug-in.

Par exemple, si vous avez une petite table qui est de 90% d'écriture, vous pouvez choisir MyISAM. Si les données peuvent être régénérés facilement et il est une petite table, par exemple pour faire la queue, vous pouvez choisir la mémoire. Si vous avez une table qui est de 90% se lit, et les données se doit d'être là quand vous recherchez, alors vous auriez probablement choisir un moteur de stockage qui prend en charge les transactions et atomicité configurable, comme InnoDB. Si vous voulez l'accessibilité par le système de fichiers w / o endommager les données, vous pouvez choisir CSV.

Néanmoins, vous pouvez utiliser en toute sécurité les moteurs de stockage multiples dans le même schéma, ainsi que l'hôte physique.

Permettez-moi de noter cependant, que vos tampons jouent un rôle dans tout ce gâchis. Si vous utilisez les deux MyISAM et InnoDB, vous devez veiller à ce que votre key_buffer et innodb_buffer_pool ne soutient pas. Cela prendra une planification minutieuse de votre part, mais c'est ce que nous faisons.

Autres conseils

Je ne peux pas vous dire si cela est une pratique courante. Je peux dire au sujet de ma propre expérience.

J'utilise toujours le meilleur outil pour le travail, donc je mélange les moteurs tout le temps. La plupart de mes projets utilisent MyISAM comme moteur par défaut.

Quand j'ai besoin juste des caractéristiques spéciales disponibles sur InnoDB, je vais pour cela.

Quand une table est la plupart du temps en lecture seule, je choisis le moteur Archive avant que je puisse clignoter.

Sachant que le serveur de la machine a assez de mémoire, toutes mes données temporaires sont magasin sur les tables Heap.

J'ai vu dans le passé quelques ralentissements de mélange MyISAM et InnoDB, mais ce n'est pas un problème de MySQL spécifique. Il est un problème de conception ne semblant pas lorsque vous utilisez un seul moteur. En fait, l'utilisation du mauvais moteur provoque plus le ralentissement n'a pas d'importance si elle est juste MyISAM, InnoDB juste ou un mélange des deux. Il est difficile de définir une formule de savoir quand le ralentissement se passerait-il. Juste des tests réels pourraient dire à vous.

Bien sûr, vous ne pouviez pas préserver l'intégrité et la cohérence de mélange InnoDB et MyISAM sur une requête unique.

J'essaie d'éviter de mélanger les tables MyISAM et InnoDB dans la même base de données, mais cela est pour la santé mentale plutôt que des raisons pratiques. Cependant, je trouve utile d'avoir une base de données avec des tables MyISAM pour rechercher du texte afin que je puisse courir que sur les sites. Garder dans une base de données séparée avec une clé étrangère pour chaque entrée, il est facile pour les autres développeurs travaillant sur la base de données pour voir ce qui se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top