ハイパフォーマンスDjango - Model

  • 19
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

High Perfomance Djangoを読んでとても勉強になったので、備忘録メモ。

クエリの数を減らせ

これをちゃんと使ってね。
開発中は、Django Debug Toolbarで発行クエリを確認。

クエリの実行時間を短く

  • indexをきちんと張る
  • でかいJoinは避ける
  • でかいテーブルにはall()はやめて、LIMITかける
  • 存在チェックはspam.count() > 0じゃなくて、spam.exists()

Foreign Keys

Generic Foreign Keysは便利だけど、裏でパフォーマンス悪いクエリ投げてることある。
自分で外部キー張った方がいい場合も。

cached_propety

実行コストがかかる & 何度も呼ばれるプロパティに対しては、キャッシュが有効。
https://docs.djangoproject.com/ja/1.9/ref/utils/

扱うオブジェクトは小さく

得られる結果がでかい場合は、これらを使ってパフォーマンスあげよう。

クエリキャッシュ

この2つが書籍の中では紹介されてたけど、Jonny Cacheは開発止まってた。
(Django1.5以上では使えなそう...)

自作するなら、gumiのブログで紹介されてるAbstructCachedModelが参考になる。
Djangoでキャッシュ機能付きモデル - gumi Engineer’s Blog

その他

勉強になったその他の資料