Django allows auto database routing。可以为测试和生产提供不同的数据库。测试的默认值是sqlite3。从sqlite3
迁移到couchdb
的单位测试会有超过10分钟的显着时间改进。跑?
如果可以进行任何测试数据库优化,还有什么其他方法?
答案 0 :(得分:0)
我建议使用完全不同的设置来开发/测试而不是路由器。
如果数据库是测试运行这么长时间的主要原因,那通常是因为在每次测试之前加载了测试中的灯具 - 使用https://github.com/dnerdy/factory_boy或类似的解决方案可能非常有用。
答案 1 :(得分:0)
不确定您是否可以成功将Couite替换为CouchDB并保存所有功能,除非您的SQLite使用非常基本。知道sqlite允许做多少,这可不容易。
如果只使用非常简单的SQL查询或者对查询结果进行复杂的计算,那么CouchDB可以加快测试速度。由于CouchDB视图存储了具有按需更新请求语义的即用型结果,因此可以节省一些CPU时间。
但是,您是否尝试使用:memory:存储空间?或者在tmpfs上使用测试数据库?另请注意,使用CouchDB,您的测试可能会遇到网络延迟 - HTTP请求并不像通过驱动程序调用函数那样便宜(sqlite只是数据库驱动程序,而不是完整的RDBMS)。
P.S。请注意,我不是在谈论Django ORM或其他人的立场,因为通常他们无法像本机库那样提供良好的效果。例如,SQLite允许自定义SELECT
个查询,而views
很少使用,而CouchDB可以更好地使用预定义的views
而不是自定义查询(temporary views
)。