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的表创建时间.
我发现使用 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)
| 归档时间: |
|
| 查看次数: |
1599 次 |
| 最近记录: |