哪些因素决定了AR记录创建的持续时间

时间:2018-05-21 13:07:21

标签: ruby-on-rails postgresql activerecord delayed-job

我正在尝试对POST请求进行一些性能优化,其中包括几个(通常是六个)关联的activerecord模型的参数,要求在每个请求中将新记录插入到几个不同的表中。有些模型还具有执行许多任务的过滤器,其中一些任务由delayed_job异步处理,后者本身涉及将记录插入delayed_jobs表,以便delayed_job工作人员可以脱机检索和处理它们。所有这些都是使用Rackspace虚拟专用服务器上的Postgres进行Rails生产模式。

检查我的日志文件中的SQL INSERT INTO语句,我的应用程序数据的表插入经常需要在几百毫秒的范围内。但是,在请求周期中插入delayed_jobs表的记录通常需要不到10毫秒。

然而,我的模型似乎并不比delayed_job的模型复杂,例如我通常在每个记录创建时插入2-6个属性,大多数涉及索引外键(多态模型的某些类型字符串)以及少量其他整数或字符串字段。另一方面,Delayed_job插入涉及4列,包括3个日期时间和有时冗长的“处理程序”文本字段。所以从表面上看,delayed_job记录似乎至少与我插入的几个应用程序记录一样复杂,但至少要快一个数量级(通常是20-30倍)。

所以我试图弄清楚这两种情况之间的区别。一般来说,哪些因素会影响模型插入的持续时间,以及为什么delayed_job可以比我的应用程序模型更快地插入记录?

0 个答案:

没有答案