8

たとえば、ユーザーがログインしていて、システムがユーザーに関する情報を保存している例:birth date、セッションからこの情報を取得したり、データベースにクエリを実行したりする方が速いのでしょうか。

私の考えでは、ユーザーは1回だけログインする必要があり、セッションは常にそこにありますが、データベースにクエリを実行すると、ユーザーがページをリロードすると、システムはデータを取得する代わりに、何度もクエリを実行する必要があります。一時的な「場所」。

私はPHPとMySQLを使用しています。

4

3 に答える 3

10

ほとんどすべての言語とデータベースで、そうです。ユーザーセッションは通常、メモリに保存されるだけであり、それを取得するには、それを検索するだけです。データベースアクセスには通常、別のプロセスとのソケット通信が含まれます。比較するとかなり重い。

于 2010-07-11T18:54:50.957 に答える
1

調子はどう?その方法は、ログインページでユーザーの資格情報を確認することです。そうすれば、ユーザーが指定した基準がデータベースで一致するかどうかを確認するためのクエリを実行する必要があります。含まれている場合は、それらをセッションに保存してから、そのセッションに基づいて続行します。

したがって、比較ではなく、ログインページでデータベースに一度クエリを実行し、後でセッションを使用する必要があります。

ログインページ

// database query run once only at this page
// if user exits, you store it into session else redirect with an error message
于 2010-07-11T18:55:31.927 に答える
0

実際、Carlの答えは完全には正しくなく、「MySql」と言っても役に立ちません。

ご覧のとおり、mysqlのようなデータベースシステムには「ストレージエンジン」があります。これらは通常ファイルに書き込みますが、メモリに書き込むもの(MEMORY)、メモリに書き込むがファイルバックアップを保持するもの(MyISAM)、および/ dev / nullに書き込むもの(BLACKHOLE)もあります。

したがって、それはすべてストレージエンジンに依存します。

  • MyISAM-優れたパフォーマンスを備えたMySQL3.23のデフォルトエンジン
  • MEMORY-ハッシュベースで、メモリに保存され、一時テーブルに役立ちます
  • InnoDB-トランザクション、行レベルのロック、および外部キーをサポートします
  • BerkeleyDB-トランザクションとページレベルのロックをサポート
  • BLACKHOLE-/ dev / nullストレージエンジン(あなたがそれに書いたものはすべて消えます)
  • 例-ストレージエンジンの例
  • ARCHIVE-アーカイブストレージエンジン
  • CSV-CSVストレージエンジン
  • ndbcluster-クラスター化されたフォールトトレラントなメモリベースのテーブル
  • FEDERATED-フェデレーションMySQLストレージエンジン
  • MRG_MYISAM-同一のMyISAMテーブルのコレクション
  • ISAM-廃止されたストレージエンジン

(PhpMyAdmin Eginesリストからのリスト)

于 2010-07-11T21:36:31.907 に答える