InnoDB: ~40 milliseconds Cons: (Slowest)
MEMORY: ~22 milliseconds Cons: (16MB Max)
MyISAM: ~25 milliseconds Cons: (Table-level locking)
J'utilise (gs), donc je ne peux pas memcache, mais ce serait mieux. Personnellement, j'envisageais d'utiliser MEMORY, mais je ne savais pas si les avantages en termes de performances permettraient d'écarter le coût des limites de taille, etc. J'ai donc fait ce que tout bon programmeur doit faire pour optimiser: je l'ai profilé.
Ma page php en question sont mises en cache dans Smarty, les seules opérations qui se déroulent sont une recherche regex sur l'URL et une poignée de session SQL pour vérifier si l'utilisateur est connecté.
Quoi qu'il en soit voici les résultats : Avec InnoDB, je recevais ~ 40 millisecondes en attente d'une demande. (J'ai mesuré cela en chrome avec les outils de développement.) Après avoir basculé la table en mémoire, j'ai obtenu ~ 20 millisecondes par demande. Hou la la! 50% d'amélioration! Mais attendez ... qu'en est-il de MyISAM? J'ai essayé cela et j'ai obtenu ~ 22-23 millisecondes par demande. Oh.
Ceci est juste moi le test, pas une application à grande échelle.Une application réelle aurait des milliers de personnes qui écrivent à cette table chaque seconde, et MyISAM verrouille au niveau de la table, ce qui pourrait être mauvais (Which MySQL database engine is better for storing sessions and session data: MyISAM or InnoDB?).
Alors je m'en tiens à la mémoire, pour le moment. C'est une amélioration considérable pour ces pages en cache, mais je vous encourage à le profiler! Si votre site Web reconstruit chaque page, les 10 millisecondes peuvent ne pas avoir d'importance.
Il est possible d'augmenter la taille maximale de la table en ajustant la variable système [max_heap_table_size] (https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_max_heap_table_size). –