11

データベーステーブルの作成に関するドキュメントは次のように述べています。

もう 1 つのオプションは、テーブルを作成する前に MySQLdb の init_command オプションを使用することです。

DATABASE_OPTIONS = {
   "init_command": "SET storage_engine=INNODB",
}

これにより、データベースへの接続時にデフォルトのストレージ エンジンが設定されます。テーブルを作成したら、このオプションを削除する必要があります。テーブルの作成時にのみ必要なクエリが各データベース接続に追加されるためです。

テーブルの作成後にこのオプションを削除する必要がある理由を知っている人はいますか?

4

4 に答える 4

7

Syntax has changed as of django 1.2

DATABASES = { 
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': '',                      
    'USER': '',     
    'PASSWORD': '',
    'OPTIONS': {
           "init_command": "SET storage_engine=INNODB",
    }   
  }   
}
于 2010-12-19T13:42:31.483 に答える
4

効率を上げるためにこのオプションを削除します。データベースに接続するたびにストレージエンジンを設定する必要はありません。テーブルを作成する場合(つまり、syncdb、south)のみです。

于 2011-02-14T12:56:47.497 に答える
4

通常、権限と設定はツリー ベースです。セッションの設定は、1 レベル上のデフォルト設定へのポインターになります。セッション設定はすでに作成されており、最初に接続したときにデフォルト設定を参照するだけです。

storage_engine 値を設定するなどして設定を変更する場合、すべての設定の新しいコピーを作成して 1 つの値を変更するか (Apache のように)、解決時にチェックインする必要がある別のレイヤーをツリーに追加します。値。MySQL がどちらを使用するかは実際にはわかりませんが、いずれにしても、この設定が必要ない場合は、ラウンドトリップごとに設定しないでください。

比較的頻繁に必要な場合は、パフォーマンスに影響を与える価値があるかもしれません。PHP でも同様の問題が発生します。PHP コード内の PHP インクルード パスのような変数を変更したくはありません。これにより、大量のオーバーヘッドが追加されていました。

ジェイコブ

于 2009-08-20T01:52:24.027 に答える
3

他のオプションがある場合、例えば:

DATABASE_OPTIONS = { "init_command": "SET storage_engine=INNODB、wait_timeout = 30、time_zone =... ", }

その場合は、デフォルトのストレージ エンジン セットのままにしても問題ありません。

于 2010-10-19T12:42:10.567 に答える