教義のクエリには、実行に4秒以上かかります
-
13-09-2019 - |
質問
私たちはプロジェクトの最後の段階にあり、最適化を開始しました。
いくつかのテストの後、ページの読み込みに費やす時間のほとんど(すべてではないにしても)が教義に費やされていることに気付きました。
5秒のページの負荷のうち、3〜4秒は2つの教義クエリにのみ使用されます。
MySQL ServerおよびDoctrineおよび結果キャッシュでクエリキャッシュを有効にしましたが、これは負荷時間を悪化させるだけのようです。
私が収集できる限り、MySQLクエリキャッシュはアクティブです。
編集]何らかの理由で、私の質問の残りが消えたので、もう一度投稿しています[/編集
qcache_free_blocks | 57
qcache_free_memory | 22300072
qcache_hits | 7117
QCACHE_INSERTS | 3308
QCACHE_LOWMEM_PRUNES | 0
qcache_not_cached | 4537
qcache_queries_in_cache | 1225
qcache_total_blocks | 2609
問題は、キャッシュがヒットしていないようで、ほとんどの時間がかかるクエリ(平均3秒)は変更されないことです。
クエリ /結果キャッシュを有効にすることで負荷時間が改善されない理由についてのヒントはありますか?
解決
私がそれを正しくした場合、あなたは現時点で最も遅いクエリのリストを持っていません。これから始めることをお勧めします。
log_slow_queries=/var/log/mysql.slow.log
その後:
できるだけ関係を制約します
関係を可能な限り制約することが重要です。これの意味は:
- 横方向の方向を課す(可能であれば双方向の関連性を避ける)
- 非必須関連を排除します
これにはいくつかの利点があります:
- ドメインモデルのカップリングの削減
- ドメインモデルのシンプルなコード(双方向性を適切に維持する必要はありません)
- 教義のための作業が少ない
盗まれた 教義のベストプラクティス
他のヒント
コンソール/コマンドラインからクエリを試しましたか? ORMなしで実行されたとき、彼らが必要とする時間は何か興味深いでしょう。
教えてください、私は教義の使用に興味がありますが、パフォーマンスをほとんど恐れていません。