2011-08-24 9 views
8

DEBUGがオンのときに現在のリクエスト/レスポンスに対して実行されたすべてのSQLクエリを取得することが可能であることがわかっています(connection.queries)。 django-debug-toolbarはまた開発に多くの手助けをします。DEBUGがFalseに設定されたDjango SQLクエリのログ

問題は、私のプロダクションサーバーが負荷が高く、各ビューに対して実行されているクエリをログに記録して、より多くのクエリを最初に作成しているページを最適化できるようにすることです。

データベースドライバを変更しなくても可能ですか?

答えて

4

Django 1.3では、django/db/backends/__init__.pyのクラスBaseDatabaseWrapperは、属性use_debug_cursorを持っています。このクラスは、デフォルトのデータベース接続(docs)を表すdjango.db.connectionオブジェクトのラッパーです。この属性をtrueに設定すると、Djangoは(django/db/backends/util.py)を使用し、実行するすべてのクエリをログに記録します(CursorWrapperではなく)。

use_debug_cursorは、現在私がこのマシンにインストールしているDjango 1.2には存在しないため、今すぐテストすることはできません。私が数分を持っていれば、これをテストするための1.3のダミープロジェクトを手に入れようとしています...私はここで頭がおかしくなるかもしれません!

use_debug_cursorは、Djangoのforce_debug_cursorに変更されました。

関連する問題