myIsam ou bien InnoDB ou bien Memory , quel "engine" choisir ?

+1 vote
12,760 vues
question 16 Février 17 dans serveur Mysql par jmlb (164 points)  
editée 20 Février 17 par jmlb

Quels sont les critères de choix de l'engine Mysql entre myIsam , InnoDB et Memory ?

J'ai fait des tests mais c'est difficile de se faire une opinion.

Il me faut de la sécurité et de la vitesse. Memory est perdu quand on éteint la machine ?

Edit : du -ks /var/lib/mysql = 350 MB.  Avec la nouvelle application, il y aura environ 50% de données supplémentaires. /home/1/mtuner rend 78 connecteurs Mysql instantanés en pointe.

commentée 16 Février 17 par ladmin (2,272 points)  
c'est vague. Comment sont les tables ? sont elles souvent appelées ? beaucoup d'écritures en permanence ? y a t il des triggers ? est ce pour votre dédié ou vos domaines en mutualisé ?
commentée 17 Février 17 par ladmin (2,272 points)  
dites au moins s'il s'agit d'une optimisation de tables existantes ou si vous vous apprêtez à créer une nouvelle application
commentée 18 Février 17 par jmlb (164 points)  
C'est pour une nouvelle application, je ne sais pas quoi choisir
commentée 20 Février 17 par atlas (293 points)  
combien d'espace mysql : du -ks /var/lib/mysql ? Combien as tu de visiteurs en même tems sur les sites de ta machine ?
commentée 20 Février 17 par jmlb (164 points)  
j'édite la question. Merci de votre aide
commentée 20 Février 17 par ladmin (2,272 points)  
pour compléter, innodb est configuré avec 2 Go, il y a 40 Mo de ram par thread et il en est prévu un maximum de 200.

1 Réponse

+2 votes
réponse 20 Février 17 par atlas (293 points)  
Cette question est trop vaste pour une réponse générale en un post.

Mais quand on voit votre config et la taille de la base, il n'y a pas à réfléchir ; c'est InnoDB !

InnoDB, c'est , quand la mémoire est grande, une sorte de myIsam en mémoire avec copie sur disque, reprise sur panne et langage évolué pour plus d'optimisation. Votre couverture innodb , 2 Go / ( 350 Mo + 50% )  sera de 400% ! N'utilisez que InnoDB.

Ce n'est pas toujours vrai parce que certaines tables myIsam ne peuvent être converties en InnoDB et réciproquement. Utilisez vous des tables très larges en colonnes et contenu par ligne avec beaucoup de formats blob et text ? Si oui, vous ne pourrez les créer qu'en myIsam.

Avec autant de Ram en plus, il faut envisager de passer en row format fixed au lieu de row format dynamic. C'est là que vous ferez la différence.
commentée 20 Février 17 par ladmin (2,272 points)  
oui, c'est pertinent. A part, le 400 % qui n'est que 390 % :) Cependant, avec certaines configurations à disques SSD où ce ratio est inférieur à 100% et peu de requêtes instantanées, une table myisam peut parfois être plus efficace. Chez 123, commencez toujours par innoDB et ensuite tentez de petites retouches. Dans 99% des cas, vous reviendrez à innoDB
commentée 20 Février 17 par jmlb (164 points)  
J'ai compris merci à vous deux
commentée 9 Juin 17 par BenoitXVII (927 points)  
Bonjour à tous,

Sur le forum de phpBB, le sujet est de temps en temps soulevé.
http://forums.phpbb-fr.com/support-utilisation-phpbb32/sujet210025.html

1. pboulanger a écrit: "Voici ce que j'ai trouvé sur la différence entre les deux http://sql.sh/1548-mysql-innodb-myisam "
2. pierredu a écrit: "fonction de recherche en plein texte --> innoDB (à partir de MySQL 5.6.4)"
3. pierredu a écrit: "On lit aussi parfois que MySQL exigerait bientôt InnoDB pour ses propres tables."

En France, on crée des partis politiques pour moins que cela. :-))
commentée 28 Septembre 17 par atlas (293 points)  
le secret des performances ? le cache de innodb est plus grand que la base.
Feel free to ask and answer in english

Bienvenue sur les FAQ de 123.fr, posez vos questions ou répondez à celles des autres usagers.

...