提高Django中MySQL表创建的速度?

Gat*_*ter 6 mysql django performance unit-testing django-models

我的一些单元测试需要10-15秒才能创建表格.这似乎不必要地长.它必须创建大约50个表,但这仍然只有每秒3个表.在经常进行单元测试时,这是一个很大的烦恼.

作为一种解决方法,我一直在sqlite3中运行我的单元测试.它速度非常快,但我更喜欢在MySQL上运行我的测试,因为那是我的实时服务器运行的.

为了说明速度差异,创建一个新项目.然后使用mysql在其上运行syncdb.然后使用sqlite3尝试它.

[~/testproject] ./manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Run Code Online (Sandbox Code Playgroud)

对我来说,在MySQL中创建上述表大约需要2秒钟.Sqlite3几乎是即时的.

我在我的开发机器上运行mysql.这是我的my.cnf.

请提出您可以想到的任何提示或调整,这可能有助于加快MySQL的表创建时间.

Gat*_*ter 1

我发现使用 sqlite 作为替代品可以使我的单元测试更快。我还删除了 SouthDB,因为这也会减慢表创建速度。

if len(sys.argv) > 1 and sys.argv[1] == 'test':
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': ':memory',
            'USER': '',
            'PASSWORD': '',
            'HOST': '',
            'PORT': '',
        }
    }
    INSTALLED_APPS = tuple([x for x in INSTALLED_APPS if x != 'south'])
Run Code Online (Sandbox Code Playgroud)