2
优化PostgreSQL以进行快速测试
我从典型的Rails应用程序从SQLite切换到PostgreSQL。 问题在于PG的运行规范变得缓慢。 在SQLite上花了〜34秒,在PG上花了〜76秒,比原来慢2倍以上。 因此,现在我想应用一些技术来使规范的性能与SQLite保持一致,而无需修改代码(理想情况下仅通过设置连接选项,这可能是不可能的)。 从我的脑海中显而易见的几件事是: RAM磁盘(在OSX上使用RSpec进行良好的设置很不错) 未记录的表(可以将其应用于整个数据库,这样我就不必更改所有脚本了吗?) 正如您可能已经了解的那样,我不在乎可靠性和其他方面(这里DB只是一堆东西而已)。 我需要充分利用PG,并使其尽可能快。 最佳答案将理想地描述这样做的技巧,设置以及这些技巧的缺点。 更新: fsync = off + full_page_writes = off仅将时间减少到〜65秒(〜-16秒)。良好的开端,但离34的目标还很远。 更新2:我尝试使用RAM磁盘,但性能提升在误差范围内。因此似乎不值得。 更新3:* 我发现了最大的瓶颈,现在我的规格与SQLite一样快。 问题是进行了截断的数据库清理。显然,SQLite的速度太快了。 为了“修复”它,我在每次测试之前都打开一个事务,并在最后将其回滚。 约700个测试的一些数字。 截断:SQLite-34s,PG-76s。 交易:SQLite-17s,PG-18s。 SQLite的速度提高了2倍。PG的速度提高了4倍。