creating your database tables上的文档说:
另一种选择是在创建表之前使用MySQLdb的init_command选项:
DATABASE_OPTIONS = {
"init_command": "SET storage_engine=INNODB",
}
这会在连接到数据库时设置默认存储引擎。 创建表后,应删除此选项 它会在表创建期间向每个查询添加一个查询 数据库连接。
有谁知道为什么在创建表后需要删除此选项?
答案 0 :(得分:6)
自django 1.2起,语法已发生变化
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '',
'USER': '',
'PASSWORD': '',
'OPTIONS': {
"init_command": "SET storage_engine=INNODB",
}
}
}
答案 1 :(得分:4)
通常,权限和设置是基于树的。您对会话的设置将指向一个高于您的默认设置的指针。您的会话设置将在第一次连接时创建并仅引用默认设置。
当您修改设置时,例如通过设置storage_engine值,您要么创建所有设置的新副本并更改一个值(如在Apache中),要么将另一个图层添加到它必须检查的树中在解决价值时。我实际上并不确定MySQL使用哪一个,但不管怎样,如果你不需要这个设置,你不应该在每次往返时设置它。
如果您确实需要相对频繁,那么性能可能会受到影响。 PHP中也出现类似的问题。您不希望修改PHP代码中的PHP包含路径等变量,这些变量过去会增加大量开销。
雅各
答案 2 :(得分:4)
删除此选项可提高效率 - 只有在创建表(即syncdb,south)时,才需要在每次连接数据库时设置存储引擎。
答案 3 :(得分:3)
如果您有其他选择,例如:
DATABASE_OPTIONS = { “init_command”:“SET storage_engine = INNODB,wait_timeout = 30,time_zone = ...”, }
然后保留默认存储引擎设置没什么坏处。