0

これは、devel の最初の行が教えてくれることです。

3177.9 ミリ秒で 10930 件のクエリを実行しました。5000 ミリ秒を超えるクエリと、複数回実行されたクエリが強調表示されます。ページの実行時間は 8976.56 ミリ秒でした

これはたくさんのように聞こえます。この原因を見つけるには、何を/どこを探す必要がありますか?

更新 - これは役に立ちましたhttp://drupal.org/node/402944 で解決策を見つけました。_menu_link_translate (menu.inc) に修正を適用しました。現在、クエリは 1500 まで減っています。

更新: 2 つのメソッドが広範囲に呼び出され、多くのクエリが生成されます。

次の形式のdrupal_lookup_path (約 600) クエリ。

SELECT src FROM url_alias WHERE dst = 'node/81528/edit' AND language IN('da', '') ORDER BY language DESC

_ad_channel_load_node (約 1800 クエリ)。このメソッドは mysql を 3 回クエリします。どうやら、このメソッドは node_load で呼び出されます。

キャッシングに関しては、クエリの数を減らす方法を見つけ始めると思います。何かが少しずれているようです。

PS私はdrupalが初めてです。

4

4 に答える 4

1

さて、以下のクエリを見てください(まだ行っていない場合はクエリ表示を有効にしてください)。どの関数が最も多く、最も遅いクエリを実行しているかを数えてみてください。次に、それらがどのモジュールに属し、何をしているのかを理解してください。

ノードが編集されるとキャッシュがクリアされるため、再度ロードする必要のある大量のデータがあります。

于 2011-02-01T13:38:10.093 に答える
0

Drupalに多くのクエリを実行させることができるいくつかのことがあります:

  1. キャッシュクリアまたは別の同様の機能のいずれかで、メニュールーターを再構築します。
  2. たくさんのモジュールがインストールされています。
  3. すべてのページで再構築されているテーマレジストリ(一部のテーマにはこの設定があります)

通常、匿名ユーザーのみがサイトを閲覧している場合は、ページキャッシュ、圧縮、およびzip形式のCSS / JSをオンにしてテストすることをお勧めします。これにより、クエリの数を大幅に減らすことができます。

また、CachegrindやWebgrindなどを使用すると、実行に時間がかかるPHP関数を特定するのに役立ちます。これは、実行しているSQLクエリの数よりも役立つ場合があります。

于 2011-02-01T20:44:40.393 に答える
0

Devel では、クエリを 1 つずつ表示することもできます。これを有効にし、記事を再編集して保存し、特定のクエリを確認してください。おそらくそれらの多くは同じように見えるので、どんどん掘り下げることができます。

記事について詳しく教えてください。CCKノードだと思いますが、多くのフィールドがありますか? どの種類?

于 2011-02-01T16:30:47.817 に答える
0

これは、メニュー ルーターに問題があるようです。メニュー キャッシュがクリアされると、 menu_rebuild が実行され、説明したように何千ものクエリが生成される可能性があります。これは、Drupal http://drupal.org/node/512962のこのコア バグの影響のようです。

クエリのサンプルを提供していただければ、さらにお役に立てるかもしれません。

于 2011-02-01T17:14:05.627 に答える