最佳答案
对于一个典型的Rails应用程序,我正在从SQLite切换到PostgreSQL。
问题是使用PG时运行specs变慢了 在SQLite上花了大约34秒,在PG上花了大约76秒,即慢2倍以上.所以现在我想在不修改代码的情况下将一些技术应用于使规范的性能与SQLite相媲美(理想情况下只是通过设置连接选项,这可能是不可能的)。
我首先想到的是:
最佳答案理想地描述了这样做的技巧,设置和这些技巧的缺点。
更新: fsync = off
+ full_page_writes = off
只将时间减少到~65秒(~-16秒)。好的开始,但距离34的目标还很远。
更新2:我尝试使用内存盘,但性能增益在一个误差范围内。所以看起来不值得。
< >强更新3:* 我发现了最大的瓶颈,现在我的规格运行得和SQLite一样快
问题是数据库清理做截断。显然,SQLite的速度太快了。
为了“修复”它,我在每次测试之前打开事务,并在结束时回滚它。
大约700个测试的一些数字。
2倍速度提高SQLite。 PG速度提高4倍