Зачем удалять django DATABASE_OPTIONS "init_command set engine = INNODB" после создания таблицы?
Документы создание таблиц базы данных:
Другой вариант - использовать параметр init_command для MySQLdb до создания ваших таблиц:
DATABASE_OPTIONS = {
"init_command": "SET storage_engine=INNODB",
}
Это устанавливает механизм хранения по умолчанию при подключении к базе данных. После того, как ваши таблицы были созданы, вы должны удалить этот параметр как он добавляет запрос, который требуется только при создании таблицы для каждого соединение с базой данных.
Кто-нибудь знает, почему необходимо удалить эту опцию после создания таблицы?
Ответы
Ответ 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 =...",
}
тогда не помешает оставить установленный по умолчанию механизм хранения.