首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何优化PostgreSQL的快速测试?

如何优化PostgreSQL的快速测试?
EN

Stack Overflow用户
提问于 2017-12-27 00:03:55
回答 2查看 0关注 0票数 0

对于典型的Rails应用程序,我将从SQLite切换到PostgreSQL。

问题是,运行规格变得缓慢与PG。

在SQLite上,它花费了~34秒,而在PG上,它是~76秒,这是慢2倍以上...

所以现在我想应用一些技巧使规范的性能与SQLite媲美。没有任何代码修改(理想情况下,只需要设置连接选项,这可能是不可能的)。

我头上有几件显而易见的事情是:

  • RAM磁盘(在OSX上使用RSpec的良好设置将很好地看到)
  • 未记录的表(它能应用于整个数据库吗?)

正如您可能已经理解的,我不关心可靠性和其余部分(DB只是一个抛弃的东西)。

我需要从控球中得到最大的收获尽可能快...

最佳答案最理想的描述戏法为了做到这一点,设置和这些技巧的缺点。

最新情况:fsync = off+full_page_writes = off仅将时间缩短到~65秒(~-16秒)。开局不错,但远未达到34的目标。

更新2:尝试使用RAM磁盘但性能增益在误差范围内。所以似乎不值得。

更新3:*我发现了最大的瓶颈,现在我的规范运行速度与SQLite一样快。

问题是数据库清理导致了截断显然SQLite在那里太快了。

要“修复”它,我打开一个交易在每次测试之前,最后再把它滚回去。

700次测试的一些数字。

  • 截断:SQLite-34s,PG-76s。
  • 事务处理:SQLite-17 s,PG-18。

SQLite的速度提高了2倍。4倍的速度增长为PG。

EN

Stack Overflow用户

发布于 2017-12-27 09:43:45

使用不同的磁盘布局:

  • $PGDATA的不同磁盘
  • $PGDATA/PG的不同磁盘[医]xlog
  • 用于tem文件的不同磁盘(每个数据库$PGDATA/base//pgsql)[医](见关于工作的说明)[医](MEM)

postgresql.conf调整:

  • 共享内存:可用内存的30%,但不超过6到8GB。使用较少的共享内存(2gb-4gb)用于编写密集型工作负载似乎更好。
  • 工作MEM:主要用于带有排序/聚合的SELECT查询。这是每个连接设置和查询可以多次分配该值。如果数据不适合,则使用磁盘(Pgsql)。(TMP)。检查“解释分析”,看看您需要多少内存。
  • 同步同步提交:默认值是安全的,但是如果您可以容忍数据丢失,那么您可以关闭
  • 随机页成本:如果您有ssd或快速RAID数组,则可以将此值降低到2.0(Rad),甚至更低(1.1)。
  • 检查点segments: you can go higher 32 or 64 and change checkpoint[医]完井[医]目标是0.9。较低的值允许更快的崩溃后恢复。
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档