2012-09-16 11 views
6

Je souhaite utiliser MySQL pour stocker des variables de session. D'après ce que je comprends, cela signifie qu'à chaque demande de page, il y en aura une en lecture et une autre en écriture sur la table.Meilleur moteur de stockage MySQL à utiliser pour le stockage de session PHP

Quel moteur de stockage MySQL est le mieux adapté à cette tâche? MyISAM, InnoDB, MariaDB (que je ne vois pas dans PHPMyAdmin), Memory, ou autre chose entièrement?

Répondre

8

"meilleur" ne veut rien dire. Vous devez exprimer vos contraintes: avez-vous besoin de cohérence? Durabilité? La haute disponibilité? Performance? Une combinaison de toutes ces propriétés? Pouvez-vous vous permettre de perdre vos sessions? Peuvent-ils tenir dans la mémoire? Avez-vous besoin de prendre en charge des accès simultanés aux mêmes données? Sans plus de contexte, je choisirais InnoDB qui est le moteur de stockage le plus équilibré. Il fournit des performances correctes pour les applications OLTP, les transactions ACID, une bonne fiabilité et une gestion sensible des accès simultanés. L'accès aux variables de session sera probablement effectué en utilisant des clés primaires, et cette opération est très efficace avec InnoDB. Maintenant, si la performance est vraiment une contrainte, je préfère utiliser un moteur NoSQL (c'est-à-dire pas MySQL). Pour stocker les données de session, Redis fait généralement un très bon travail, et est assez facile à intégrer et à déployer.

+0

Excellente réponse. –

1

Le moteur de stockage de mémoire semble être la meilleure option. Gardez à l'esprit que c'est bon pour les sessions temporaires.

http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

+0

Cela ne sera pas un problème si j'ai un équilibreur de charge car le moteur n'écrit pas les données sur le disque et les serveurs ne partagent pas la mémoire? En outre, si le serveur tombe en panne ou est redémarré, vais-je perdre toutes mes données? – qwertymk

0

Cela dépend de la façon dont vous évaluez « Betterness »:

MyISAM est le plus commun (de nombreux forfaits d'hébergement partagé ne vous permettent d'utiliser MyISAM). De plus, il est plutôt limité dans le contrôle des relations, donc vous le configurez très rapidement et facilement. Si vous voulez une portabilité et une implémentation rapide sur plusieurs scénarios d'hébergement, MYISAM EST MEILLEUR. InnoDB vous permet de créer des relations et de sauvegarder l'intégrité des données en liant des clés dans différentes tables, ce qui signifie plus de travail, mais beaucoup plus de conception de base de données professionnelle. De nombreux packs d'hébergement mutualisés n'implémentent pas InnoDB, donc lors de l'exportation de la structure de table d'un environnement à un autre, vous pourriez avoir du travail supplémentaire à faire. Si vous voulez une gestion et un contrôle de la gestion des biens immobiliers, INNODB EST LE MEILLEUR. En ce qui concerne la portabilité des données, une base de données InnoDB sera complètement acceptée par MyISAM (car MyISAM ne vérifie pas l'intégrité des données: "y at-il un numéro d'utilisateur 4 dans la base de données utilisateur quand j'insère un nouvel enregistrement dans user_car, par exemple"). Si vous démarrez avec MyISAM, exporter vers une base de données InnoDB complète sera un cauchemar, même si vos données ont toutes les clés, les données de table doivent être importées dans le bon ordre (utilisateur et voiture, avant user_car).

MariaDB? jamais, simplement parce que moins de gens l'utilisent, vous aurez donc moins de soutien, par rapport à MyISAM et InnoDB.

Ligne de démultiplication: INNODB.

+3

Pourquoi MariaDB n'a jamais? – qwertymk

+1

Si vous découragez fortement Maria, il pourrait être utile de dire pourquoi - sinon cette phrase n'est pas très utile! Souhaitez-vous éditer votre message et développer un peu sur ce point? – halfer

+0

@quertymk et halfer, suivi vos demandes et édité. merci! :) –

Questions connexes