小编the*_*row的帖子

优化PostgreSQL以进行快速测试

我正在从SQLite切换到PostgreSQL,用于典型的Rails应用程序.

问题是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倍.

sql database postgresql performance database-tuning

196
推荐指数
2
解决办法
5万
查看次数

Django自我指称外键

我对Web应用程序和数据库的新东西都很陌生,所以这可能是一个愚蠢的问题.我想创建一个模型("CategoryModel"),其中的字段指向模型的另一个实例(其父项)的主要ID.

class CategoryModel(models.Model):
    parentId = models.ForeignKey(CategoryModel)
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?谢谢!

python django django-orm

142
推荐指数
4
解决办法
5万
查看次数

如何使用TortoiseSVN创建新分支?

如何使用TortoiseSVN使用我的工作副本创建新分支?

我看到了分支选项,但我没有看到以某种方式命名的方法.

svn tortoisesvn branch

136
推荐指数
4
解决办法
16万
查看次数

用python练习BDD

哪些是最先进的框架和工具,可用于python实践行为驱动开发?特别是找到类似rspec和mocha的类似工具的红宝石会很棒.

python testing bdd

132
推荐指数
9
解决办法
5万
查看次数

枚举() - 用Python生成一个生成器

我想知道当我将生成器函数的结果传递给python的enumerate()时会发生什么.例:

def veryBigHello():
    i = 0
    while i < 10000000:
        i += 1
        yield "hello"

numbered = enumerate(veryBigHello())
for i, word in numbered:
    print i, word
Run Code Online (Sandbox Code Playgroud)

枚举是否是懒惰地迭代,还是将所有内容都插入第一个?我99.999%肯定它很懒,所以我可以把它当作生成器功能完全相同,还是我需要注意什么?

python iterator generator enumerate

70
推荐指数
3
解决办法
3万
查看次数

如何在python中使用win32 API?

如何在Python中使用win32 API?
最好和最简单的方法是什么?
你能举一些例子吗?

python api winapi

52
推荐指数
3
解决办法
8万
查看次数

如何从HTTP Last-Modified标头解析日期?

HTTP Last-Modified标头包含以下格式的日期(示例):从此字符串
Wed, 09 Apr 2008 23:55:38 GMT
解析java.util.Date的最简单方法是什么?

java date http http-headers

52
推荐指数
5
解决办法
4万
查看次数

Boost.Any vs. Boost.Variant

我在Boost.Any和Boost.Variant之间选择时遇到了麻烦.
我什么时候应该使用每一个?

各有哪些优缺点?

我基本上希望从外部来源存储一些状态.

c++ boost boost-variant boost-any

51
推荐指数
1
解决办法
2万
查看次数

如何将我的git repo的一部分推送到Heroku?

我有一个已经在Github上的多模块应用程序.它由两个模块组成,其中一个是Android应用程序,另一个是基于Rails的Web应用程序.所以我的项目的目录结构是以下形式:

ProjectRoot
|
+-- web
|
+-- android
|
+-- .git
Run Code Online (Sandbox Code Playgroud)

因此,我不能简单地cd进入ProjectRoot并将我的应用程序推送到Heroku作为Rails应用程序的根文件夹ProjectRoot/web.有没有办法将web文件夹推送到Heroku?如果我将web变成一个git子模块,它应该很容易实现,但是我只在Git上有5个私人回购,我更喜欢只为我的整个应用程序使用1个回购.

git heroku

51
推荐指数
2
解决办法
1万
查看次数

为每个类提取接口是最佳做法吗?

我见过代码,其中每个类都有一个它实现的接口.

有时它们并没有共同的界面.

它们就在那里,它们被用来代替具体的物体.

它们不为两个类提供通用接口,并且特定于该类解决的问题域.

有什么理由这样做吗?

c# interface software-design

48
推荐指数
4
解决办法
2万
查看次数