小编Joh*_*hir的帖子

postgres上这个delayed_job查询的最佳索引是什么?

delayed_job定期执行这样的查询:

SELECT  "delayed_jobs".*
FROM "delayed_jobs"
WHERE ((run_at <= '2012-05-23 15:16:43.180810' AND (locked_at IS NULL OR locked_at < '2012-05-23 11:16:43.180841') OR locked_by = 'host:foo pid:1') AND failed_at IS NULL)
ORDER BY priority ASC, run_at ASC LIMIT 5
Run Code Online (Sandbox Code Playgroud)

我在相当大的数据库机器上的日志报告显示需要四分之一秒才能运行.我可以在所选的所有列上抛出一些索引,但我可以从多列索引中获得更多性能.

我可以为此查询创建的最佳多列索引是什么?有没有可以为我计算的工具?

更新

postgres版本:9.1.3

一个现有索引:priority,run_at(名为"delayed_jobs_priority")

出于explain analyze:

Limit  (cost=0.00..219.65 rows=5 width=1154) (actual time=0.727..0.727 rows=0 loops=1)
   ->  Index Scan using delayed_jobs_priority on delayed_jobs  (cost=0.00..351.43 rows=8 width=1154) (actual time=0.725..0.725 rows=0 loops=1)
         Filter: ((failed_at IS NULL) AND (((run_at <= '2012-05-23 18:11:03.980113'::timestamp without time zone) AND …
Run Code Online (Sandbox Code Playgroud)

sql postgresql multiple-columns delayed-job database-indexes

6
推荐指数
1
解决办法
633
查看次数

在活动资源请求中设置标头

我有一个Active Resource模型,需要在发布/通过save和update_attributes之前设置一个标题.问题是每个用户的标头值需要不同,因此无法在模型级别设置.我见过的例子设置为标题的一部分find,get或自定义方法,但没办法将它添加到一个@myclass.save.像prefix_options标题一样的东西是理想的(@myclass.prefix_options[:myvar] = 'abcd')但我没有找到类似的东西.任何见解将不胜感激.

rest ruby-on-rails activeresource

6
推荐指数
1
解决办法
3083
查看次数

是否可以只询问ActiveRecord关联中的某些列?

考虑

def Foo
  has_one :user
end
Run Code Online (Sandbox Code Playgroud)

假设我只想要一个Foo人的User名字,而不是任何其他专栏.所以我想要

SELECT name FROM "users" WHERE "prices"."id" = 123
Run Code Online (Sandbox Code Playgroud)

但是做foo.user.name会给我

SELECT * FROM "users" WHERE "prices"."id" = 123
Run Code Online (Sandbox Code Playgroud)

是否有任何光滑的方式使用该关联只获得一列?如果没有,那么我必须这样做:

User.where(id: foo.user_id).pluck(:name).first
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails associations

6
推荐指数
1
解决办法
2623
查看次数

`rails server puma`与`puma`

一些指南(示例)建议您启动一个网络服务器

bundle exec rails server puma
Run Code Online (Sandbox Code Playgroud)

但我总是刚开始的服务器puma直接

bundle exec puma
Run Code Online (Sandbox Code Playgroud)

通过启动puma(或任何其他服务器)时会发生什么特别的事情rails server吗?

ruby-on-rails heroku puma

6
推荐指数
1
解决办法
3425
查看次数

字符串匹配的多列索引+与pg_trgm的字符串相似性?

给这个表:

foos
integer id
string name
string type
Run Code Online (Sandbox Code Playgroud)

和这样的查询:

select * from foos where name ilike '%bar%'
Run Code Online (Sandbox Code Playgroud)

我可以像这样制作一个pg_trgm索引,以便更快地进行查找:

CREATE INDEX ON foos USING gin (name gin_trgm_ops)
Run Code Online (Sandbox Code Playgroud)

(对?)

我的问题:这样的查询怎么样:

select * from foos where name ilike '%bar%' AND type = 'baz'
Run Code Online (Sandbox Code Playgroud)

我可以创建一个有助于查找两列的索引吗?

(我知道trigram不是严格的全文,但我正在这样标记这个问题)

sql postgresql full-text-search trigram

6
推荐指数
1
解决办法
2248
查看次数

uWSGI是否在启动时启动所有进程?

我在uWSGI上运行了几个应用程序.随着时间的推移,大多数内存的使 我总是将此归因于我没有追踪到的内存泄漏.但最近我注意到增长非常大.我想知道每个块是否与正在启动的进程相关联.

uWSGI是否在引导时启动所有进程,或者只有在有足够的请求进入必要时才启动新的进程?

这是一个示例配置:

[uwsgi]
strict = true

wsgi-file = foo.py
callable = app

die-on-term = true

http-socket = :2345

master = true
enable-threads = true
thunder-lock = true
processes = 6
threads = 1

memory-report = true
Run Code Online (Sandbox Code Playgroud)

更新:这看起来相关:http://uwsgi-docs.readthedocs.org/en/latest/Cheaper.html

"工人"是否意味着与"过程"相同(答案似乎是肯定的)?如果是这样,那么似乎我希望数字始终保持不变,我应该这样做:

cheaper = 6
cheaper-initial = 6
processes = 6
Run Code Online (Sandbox Code Playgroud)

python uwsgi

6
推荐指数
1
解决办法
995
查看次数

为什么我的参数哈希为零?

在我的 Rails 控制器中,在窥探会话中,我的params哈希值是nil. request.params具有预期的哈希值。

\n\n

如果我注释掉该params = \xe2\x80\xa6行,params则恢复正常。

\n\n
class UsersController < Clearance::UsersController\n  skip_before_filter :verify_authenticity_token\n\n  def update\n    binding.pry\n    params = params.require(:user).allow(:foo)\n  end\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

可能是什么原因造成的?

\n

ruby-on-rails rails-console pry strong-parameters

6
推荐指数
2
解决办法
4168
查看次数

如何为单个迁移设置statement_timeout?

我想statement_timeout为单独的迁移设置 postgres。我似乎无法做到这一点。这是我的实验:

def change
  execute <<~SQL
    SET LOCAL statement_timeout = 1; -- ms

    -- this does not cause a timeout which is expected, because pg
    -- only applies the timeout to the next protocol message / statement,
    -- and rails sends everthing inside execute in the same statement
    select pg_sleep(1); -- seconds
  SQL

  # if uncommented, this DOES cause a timeout, which is expected
  # execute <<~SQL
  #   select pg_sleep(1); -- seconds
  # SQL

  # this does not …
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails database-migration

6
推荐指数
1
解决办法
4920
查看次数

有没有办法禁止在本地创建具有特定名称的 git 分支?

我有一些项目使用“master”,而其他项目则使用“main”,我经常不小心检查其中一个。最大的问题是在一个使用“main”和使用“master”的heroku项目上,所以git checkout master成功并且看起来很正常。

有没有办法在本地配置一些东西,这样创建这个分支就会失败?

git

6
推荐指数
1
解决办法
91
查看次数

在包含500,000个文件的目录中快速访问文件

我有一个包含500,000个文件的目录.我想尽快访问它们.该算法要求我重复打开和关闭它们(不能同时打开500,000个文件).

我怎样才能有效地做到这一点?我原本以为我可以缓存inode并以这种方式打开文件,但是*nix没有提供通过inode打开文件的方法(安全性或其他一些方法).

另一个选择是不要担心它,并希望FS在文件查找目录中做得很好.如果这是最好的选择,哪个FS最好.某些文件名模式是否比其他文件模式更快?例如01234.txt vs foo.txt

顺便说一句,这完全在Linux上.

c++ linux filesystems file-io inode

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