6

MySQLを使用してセッション変数を保存したい。私が理解していることから、これは、すべてのページ要求で、テーブルへの読み取りと書き込みが1回行われることを意味します。

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

4

4 に答える 4

8

「最高」は何の意味もありません。あなたはあなたの制約を表現する必要があります:あなたは一貫性が必要ですか?耐久性?高可用性?パフォーマンス?これらすべてのプロパティの組み合わせ?セッションを失う余裕はありますか?それらはメモリに収まりますか?同じデータへの同時アクセスをサポートする必要がありますか?

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

パフォーマンスが本当に制約である場合は、NoSQLエンジン(つまり、MySQLではない)を使用したいと思います。セッションデータを保存するために、Redisは通常非常に優れた仕事をしており、統合とデプロイが簡単です。

于 2012-09-16T17:46:52.717 に答える
2

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

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

于 2012-09-16T17:38:57.920 に答える
0

それはあなたが「より良い」をどのように評価するかに依存します:

MyISAMが最も一般的です(多くの共有ホスティングパッケージでは、MyISAMのみを使用できます)。さらに、関係制御の面でかなり制限されているため、非常に迅速かつ簡単に設定できます。複数のホスティングシナリオ間での移植性と迅速な実装が必要な場合は、MYISAMが最適です。

InnoDBを使用すると、異なるテーブルのキーをリンクすることで、関係を作成し、データの整合性を保護できます。これは、より多くの作業を意味しますが、より専門的なデータベース設計を意味します。多くの共有ホスティングパッケージはInnoDBを実装していないため、ある環境から別の環境にテーブル構造をエクスポートする場合、追加の作業が必要になる場合があります。実現の管理と制御が必要な場合は、INNODBが最適です。

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

MariaDB?MyISAMやInnoDBと比較して、使用する人が少ないという理由だけで、サポートが少なくなることはありません。

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

于 2012-09-16T17:59:55.113 に答える
0

SQL接続からのオーバーヘッドを望まない場合は、MemCachedセッションソラージの使用を検討してください。http://php.net/manual/en/memcached.sessions.phpを参照してください

于 2012-09-16T18:19:31.490 に答える