web-dev-qa-db-ja.com

Drupalは、キャッシュされたデータにデータベースを使用するのはなぜですか?

なぜDrupalは、キャッシュされたデータをデータベースに入れるのですか?)データベースはパフォーマンスのボトルネックを簡単に引き起こす可能性があるため、それを理解するのは難しいです。

3
runeveryday

Drupalコアには、低レベルの使用を処理する優れたキャッシングシステムが付属しています。データベースをキャッシュとして使用すると、毎日数百/数千の訪問者がいるサイトを簡単に作成できます。これは設定が簡単なため、適切なデフォルトですが、高性能のためのより高度なキャッシュ戦略がサポートされています。

  • Drupal 6と7の両方で、一部のキャッシュにデータベースの代わりにmemcacheを使用してキャッシュを改善するモジュールがあります。
  • Pressflow 6およびDrupal 7コアの場合、Varnishなどの外部キャッシュを設定できます。

したがって、Drupalには実際にキャッシュの可能性がたくさんありますが、より高度なパフォーマンスを使用してパフォーマンスを向上させるには、追加の作業を行う必要があります。これには、とにかくさまざまなサーバーのセットアップが必要になります。しかし、本当に使いやすいデフォルトが推奨されます。

8
googletorp

ここで尋ねた質問は、データベースキャッシュを他のもので置き換えることができるかどうかではありませんが、なぜDrupalはデータベースにデータベース情報をキャッシュします。ここで言及されていない理由は、データベース情報が再び同じデータベースにキャッシュされますが、同じ形式ではキャッシュされません。ノード情報やテーマ情報などの元のデータは、一種の正規化された形式で保存されるため、データの編集やクエリが簡単になります。キャッシュされた値ページの表示に必要な処理量を削減する方法で保存されます。

ページビューが次の簡略化された手順で構成されているとします。

  1. データベースから情報を取得する
  2. 表示に適するように情報を操作する
  3. 結果を表示する

Drupalは、ステップ2の結果をデータベースに保存するため、後続のページビューでステップ1と2を実行する必要はありません。これにより、時間と処理能力が節約されます。元のデータが変更されたとき、キャッシュをクリアする必要があります。

11

キャッシュされたデータをデータベースからフェッチすることは、単純なSQLリクエストであるため、簡単かつ高速です。また、ほとんどの結果は、SQLキャッシングシステムによってメモリにキャッシュされます。

他のキャッシングシステムもありますが、デフォルトのキャッシングシステムのデータベースほど優れていません。

  • ファイルシステム:データの一貫性、ファイルのアクセス許可、ファイルのロック、ファイルの管理を処理する必要があります。
  • メモリ:データベースより高速ですが、追加の設定が必要です。したがって、これはデフォルトのキャッシングシステムであってはなりません。
5
jcisio

実際、drupalキャッシュシステムはdrupal6とdrupal7にプラグイン可能です。つまり、あらゆる種類のキャッシングシステムを背後に置くことができます。

デフォルトではdrupalはデータベースベースのキャッシュシステムを使用しますが、たとえばmemcacheモジュールをmemcacheに置き換えることができます。

必要な場合は、ファイルベースのファイルを作成することもできますが、これはおそらく遅くなるはずです。

4
Daniel Wehner

理由の非常に単純な説明は、パフォーマンスを向上させるキャッシュインターフェイスを提供することです。これにより、デフォルトでは、レイヤーがDrupalサイトに追加されません。

他のキャッシングメカニズムの方が優れていたり、より高速であったりしますが、多くのDrupalサイトでは必要ない追加の要件が導入されます。

幸いなことにDrupalは、必要な人のためにキャッシングシステムを交換できるように作られています。

2
Jeremy French