2012-09-16 12 views
6

セッション変数を保存するためにMySQLを使用したいと思います。私が理解していることは、これは、すべてのページ要求に対して、1つの読み取りと1つのテーブルへの書き込みが行われることを意味します。PHPセッションストレージに最適なMySQLストレージエンジン

このタスクにはどのMySQLストレージエンジンが最適ですか? MyISAM、InnoDB、MariaDB(私はPHPMyAdminには表示されません)、メモリ、または完全に他の何か?

答えて

8

"ベスト" 何を意味します。あなたは制約を表現する必要があります:一貫性が必要ですか?耐久性は?高可用性?パフォーマンス?これらすべての特性の組み合わせ?セッションを失う余裕はありますか?彼らは記憶に収まるだろうか?同じデータへの同時アクセスをサポートする必要がありますか?

これ以上コンテキストがなければ、私はInnoDBを選択します。InnoDBは最もバランスのとれたストレージエンジンです。 OLTPアプリケーション、ACIDトランザクション、良好な信頼性、合理的な並行性の管理に適したパフォーマンスを提供します。セッション変数のアクセスは主キーを使用して行われる可能性が高く、この操作はInnoDBで非常に効率的です。

パフォーマンスが実際に制約条件である場合は、NoSQLエンジン(MySQLではなく)を使用します。セッションデータを保存するには、通常Redisは非常に優れた仕事をしており、統合と展開が容易です。

+0

優れた答え。 –

1

メモリストレージエンジンが最適です。これは一時的なセッションには適していることに注意してください。

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

+0

エンジンがディスクにデータを書き込まず、サーバーがメモリを共有しないため、ロードバランサを使用しても問題ありませんか?また、サーバーがクラッシュしたり再起動したりすると、すべてのデータが失われますか? – qwertymk

0

それはあなたが「betterness」を評価する方法に依存します:

のMyISAMは(のみあなたがMyISAMテーブルを使用してみましょう多くの共有ホスティングパッケージ)、最も一般的です。それは関係管理の面ではかなり制限されているので、あなたはそれを本当に素早く簡単に設定します。複数のホスティングシナリオで移植性と迅速な実装が必要な場合は、MYISAM IS BESTをお勧めします。

InnoDBを使用すると、異なるテーブルにキーをリンクすることで、関係を作成してデータの整合性を保つことができます。多くの共有ホスティングパッケージはInnoDBを実装していないので、ある環境から別の環境にテーブル構造をエクスポートするときには、やりがいがあります。あなたが実践的な管理とコントロールを望むなら、INNODB IS BESTが最適です。

InnoDBデータベースは、MyISAMがデータの整合性をチェックしないため、完全に受け入れられます。「user_carに新しいレコードを挿入すると、ユーザーデータベースにユーザー番号4がありますか?例えば")。 MyISAMを使い始めると、本格的なInnoDBデータベースへのエクスポートは悪夢となります。データにすべてのキーが含まれていても、テーブルのデータを正しい順序(user_carの前にuserとcar)でインポートする必要があります。

MariaDB? MyISAMやInnoDBと比較してサポートが少なくなります。

ボトムラインクリンチャー:INNODB。

+3

なぜMariaDBは決して? – qwertymk

+1

あなたが強くマリアを落胆させた場合、それは価値があるかもしれません - なぜなら、その文はあまり有用ではありません!投稿を編集してそのポイントを少し拡大しますか? – halfer

+0

@quertymkとhalferし、あなたの要求に従って編集しました。ありがとう! :) –

関連する問題