Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails PgSQL占用的时间太多,响应速度太慢_Ruby On Rails_Postgresql_Ruby On Rails 5_Amazon Rds_Postgresql 9.6 - Fatal编程技术网

Ruby on rails PgSQL占用的时间太多,响应速度太慢

Ruby on rails PgSQL占用的时间太多,响应速度太慢,ruby-on-rails,postgresql,ruby-on-rails-5,amazon-rds,postgresql-9.6,Ruby On Rails,Postgresql,Ruby On Rails 5,Amazon Rds,Postgresql 9.6,最近几天我在db方面遇到了一个奇怪的问题。一个简单的查询占用了太多的时间,当我尝试将aws rds连接到pgadmin时,它会在几秒钟后断开连接。这个问题以前没有发生过。我不知道如何解决这个问题 以下是我的aws rds的统计数据: 执行计划: Aggregate(成本=9315.62..9315.63行=1宽度=8)(实际时间=59379.535..59379.536行=1圈=1) 缓冲区:共享命中=32669污损=5 ->仅使用用户对用户进行索引扫描(成本=0.42..8758.99行

最近几天我在db方面遇到了一个奇怪的问题。一个简单的查询占用了太多的时间,当我尝试将aws rds连接到pgadmin时,它会在几秒钟后断开连接。这个问题以前没有发生过。我不知道如何解决这个问题

以下是我的aws rds的统计数据:

执行计划:

Aggregate(成本=9315.62..9315.63行=1宽度=8)(实际时间=59379.535..59379.536行=1圈=1)
缓冲区:共享命中=32669污损=5
->仅使用用户对用户进行索引扫描(成本=0.42..8758.99行=222652宽度=0)(实际时间=0.058..41652.438行=223966循环=1)
堆取数:33168
缓冲区:共享命中=32669污损=5
计划时间:0.653毫秒
执行时间:59439.600毫秒
下面是一个场景。 我正在调用一个api,其中我的代码执行2或3个查询。如果数据库上的简单查询需要15秒,那么正常查询将需要30秒以上,并且每当我的api需要30秒以上时,Heroku服务器就会抛出H12(503服务不可用)错误,并且我的前端不会呈现任何内容。因此,我试图弄明白为什么rds db要花太多时间来响应一个简单的db查询,而这个查询应该在毫秒内响应。信息,我分享一个api的分解表之一。我们可以清楚地看到,数据库占用了90%的时间


计数很慢–您必须扫描所有行才能计数

也就是说,通过在表上运行
VACUUM
,可以使索引的扫描速度更快,从而减少“堆获取”(检查元组可见性)的数量


除此之外,唯一的改进方法是使用
真空(满)
重写表,以消除膨胀。但不要忘了在完成此操作后再次用真空吸尘器吸尘。

我也无法在datastudio中连接我的rds。运行您的查询@LaurenzAlbe59439.600 ms后,在不执行读取IO(仅5次写入)的情况下计数223966行是非常糟糕的。询问Amazon/Heroku支持部门交易内容。好的,我承认计数是一项缓慢的工作。但是运行一个简单的find查询需要15秒的响应时间。simple不同于fast。让我澄清一下我的场景,我正在调用一个api,其中我的代码执行2或3个查询。如果对db的简单查询需要15秒,那么正常查询将需要30秒以上,并且每当我的api需要30秒以上时,服务器就会抛出H12(503服务不可用)错误,并且我的前端不会呈现任何内容。因此,我试图弄明白为什么rds db要花太多时间来响应一个简单的db查询,而这个查询需要扫描30000个8kB的数据块才能计数200000行,这可不是一件小事。但是现在真的很糟糕。也许您的索引或表过于臃肿,重新组织会有所帮助。