Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 Rails数据库与多个工作人员的性能_Ruby On Rails_Database_Performance_Postgresql_Heroku - Fatal编程技术网

Ruby on rails Rails数据库与多个工作人员的性能

Ruby on rails Rails数据库与多个工作人员的性能,ruby-on-rails,database,performance,postgresql,heroku,Ruby On Rails,Database,Performance,Postgresql,Heroku,我正在开发一个像搜索引擎一样工作的应用程序,它一直有工作人员在后台搜索web并将结果添加到结果表中 虽然一切都很完美,但最近我开始在尝试浏览、编辑或删除结果时获得巨大的响应时间。我的猜测是,Results表一直被不断添加新数据的工作人员锁定,这意味着web请求必须等待表被释放 但是,我无法找到一种方法来降低结果表上的负载,并获得更快的web请求响应时间。有没有人必须处理这样的事情 搜索机器人不断地阅读和添加新内容,在找到新内容时会添加新结果。我在想,也许在搜索后只将大部分结果添加到数据库中会有所

我正在开发一个像搜索引擎一样工作的应用程序,它一直有工作人员在后台搜索web并将结果添加到结果表中

虽然一切都很完美,但最近我开始在尝试浏览、编辑或删除结果时获得巨大的响应时间。我的猜测是,Results表一直被不断添加新数据的工作人员锁定,这意味着web请求必须等待表被释放

但是,我无法找到一种方法来降低结果表上的负载,并获得更快的web请求响应时间。有没有人必须处理这样的事情

搜索机器人不断地阅读和添加新内容,在找到新内容时会添加新结果。我在想,也许在搜索后只将大部分结果添加到数据库中会有所帮助,或者会让事情变得更糟,因为这需要更长的时间

无论如何,我在这里不知所措,如果有任何帮助或想法,我将不胜感激


我正在使用RoR 2.3.8,并使用PostgreSQL在Heroku上托管我的应用程序,请尝试以下命令。由于您只使用后台工作人员添加新内容,因此我假设在浏览/编辑/删除时不会发生锁定冲突。

请尝试该命令。由于您只使用后台工作人员添加新内容,因此我假设在浏览/编辑/删除时不会发生锁定冲突。

您可能希望在数据库前面放置缓存。在Heroku上,您可以使用memcached作为缓存存储


这将减轻数据库读取的负载。您甚至可以让您的搜索机器人在添加新内容时更新缓存,这样您就可以使用很长的过期时间,并且您的前端Rails应用程序很少(如果有)直接命中数据库进行简单读取。

您可能希望在数据库前面放置缓存。在Heroku上,您可以使用memcached作为缓存存储


这将减轻数据库读取的负载。您甚至可以让您的搜索机器人在添加新内容时更新缓存,这样您就可以使用很长的过期时间,并且您的前端Rails应用程序很少(如果有)直接命中数据库进行简单读取。

PostgreSQL不会锁定表进行读取或写入。开始记录您的查询并尝试了解发生了什么。猜测没有帮助,你必须深入研究

要检查当前活动,请执行以下操作:

SELECT * FROM pg_stat_activity;

PostgreSQL不会为读取或写入锁定表。开始记录您的查询并尝试了解发生了什么。猜测没有帮助,你必须深入研究

要检查当前活动,请执行以下操作:

SELECT * FROM pg_stat_activity;