Подтвердить что ты не робот

Зачем удалять django DATABASE_OPTIONS "init_command set engine = INNODB" после создания таблицы?

Документы создание таблиц базы данных:

Другой вариант - использовать параметр init_command для MySQLdb до создания ваших таблиц:

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

Это устанавливает механизм хранения по умолчанию при подключении к базе данных. После того, как ваши таблицы были созданы, вы должны удалить этот параметр как он добавляет запрос, который требуется только при создании таблицы для каждого соединение с базой данных.

Кто-нибудь знает, почему необходимо удалить эту опцию после создания таблицы?

4b9b3361

Ответ 1

Обычно разрешения и настройки основаны на деревьях. Ваши настройки для сеанса будут указателем на настройки по умолчанию на один уровень выше вашего. Настройки сеанса будут уже созданы и будут просто ссылаться на настройки по умолчанию при первом подключении.

При изменении параметра, например, путем установки значения storage_engine, вы создаете новую копию всех параметров и изменяете одно значение (как в Apache) или добавляете еще один слой к дереву, которое оно должно проверять при разрешении значений. Я на самом деле не уверен, какой из них использует MySQL, но в любом случае, если вам не нужен этот параметр, вы не должны устанавливать его в каждом раунде.

Если вам это нужно относительно часто, это может стоить удара производительности. Аналогичная проблема возникает в PHP. Вы не хотите изменять переменные, такие как путь PHP include в вашем PHP-коде, который использовался для добавления тонны накладных расходов.

Jacob

Ответ 2

Синтаксис изменился с django 1.2

DATABASES = { 
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': '',                      
    'USER': '',     
    'PASSWORD': '',
    'OPTIONS': {
           "init_command": "SET storage_engine=INNODB",
    }   
  }   
}

Ответ 3

Удаление этой опции для повышения эффективности - вам не нужно устанавливать механизм хранения каждый раз при подключении к базе данных, только когда вы создаете таблицы (например, syncdb, юг).

Ответ 4

Если у вас есть другие параметры, например:

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

тогда не помешает оставить установленный по умолчанию механизм хранения.