Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
Postgresql Postgres:为不相关的表选择块插入_Postgresql_Locks - Fatal编程技术网

Postgresql Postgres:为不相关的表选择块插入

Postgresql Postgres:为不相关的表选择块插入,postgresql,locks,Postgresql,Locks,目前,我们正面临一些数据库(postgres)问题,我们掌握的信息无法带来新的见解。希望有人能帮我们 某些上下文 我们正在使用的工具基本上是一个通用数据库系统。因此,用户可以动态添加表和列。 在将条目插入其中一个表后,我们返回条目的“完整”版本。例如,如果条目包含一个用户列(表示为一个用户ID数组),我们将查询有关这些用户的一些信息,并在将其发送到客户端之前将其添加到条目中。添加信息是使用JavaScript完成的,而不是通过连接完成的 问题 用户表上的SELECT查询似乎阻止了某些生成表上的插

目前,我们正面临一些数据库(postgres)问题,我们掌握的信息无法带来新的见解。希望有人能帮我们

某些上下文

我们正在使用的工具基本上是一个通用数据库系统。因此,用户可以动态添加表和列。 在将条目插入其中一个表后,我们返回条目的“完整”版本。例如,如果条目包含一个用户列(表示为一个用户ID数组),我们将查询有关这些用户的一些信息,并在将其发送到客户端之前将其添加到条目中。添加信息是使用JavaScript完成的,而不是通过连接完成的

问题

用户表上的SELECT查询似乎阻止了某些生成表上的插入。两个表之间没有外键关系(条目中的用户ID存储为整数数组)。 而且,插入物似乎相互阻塞。但这可能是第一个问题造成的

为了查看哪些查询正在阻止哪些其他查询,我们运行了以下语句:

SELECT 
    blockeda.pid AS blocked_pid,
    blockeda.query as blocked_query,
    blockinga.pid AS blocking_pid,
    blockinga.query as blocking_query,
    blockedl.mode as blocked_mode,
    blockeda.query_start as blocked_query_start,
    blockinga.query_start as blocking_query_start
FROM 
    pg_catalog.pg_locks blockedl
JOIN 
    pg_stat_activity blockeda 
ON 
    blockedl.pid = blockeda.pid
JOIN 
    pg_catalog.pg_locks blockingl
ON
    (blockingl.transactionid=blockedl.transactionid AND blockedl.pid != blockingl.pid)
JOIN 
    pg_stat_activity blockinga 
ON 
    blockingl.pid = blockinga.pid
WHERE NOT 
    blockedl.granted
LIMIT
    10;
结果如下所示(除了我稍微更改了表名和列名):

有人知道为什么这些查询应该互相阻塞吗? 如果你需要更多的信息来回答这个问题,请告诉我

任何帮助都将不胜感激

提前多谢了

杰西

编辑

表生成表的定义(静态部分):

解决方法

通过手动终止任何运行时间超过30秒的事务,我们暂时解决了这个问题。似乎只有少数事务无法解决,因此越来越多的新事务被阻止和堆积

之后,我们将启动这些事务的相关代码更改为使用承诺而不是回调,从此错误不再发生。所以我们可能忘了在一个错误案例中调用回调。
我们将进一步调查,看看这是否真的解决了问题。谢谢你迄今为止的帮助

您正在运行的查询返回阻塞事务运行的最新语句,但这不一定是导致锁定的语句(在
SELECT
的情况下,很可能不是)

首先应该弄清楚哪些SQL语句实际运行

您可以设置
log\u statements='all'
并重现问题。
确保
log\u line\u前缀
包含
%c
,以便您可以识别会话。
然后找出每个事务所涉及的语句


请记住,如果涉及外键或触发器,看似不相关的表可能会被语句锁定。

a
SELECT
将永远不会阻止DML语句,除非SELECT包含一个
FOR UPDATE
子句,谢谢您的回复!有没有一种方法可以改变查询,告诉我们哪些语句导致阻塞?记录和复制的问题在于,它只发生在生产中,我们不知道何时发生。这似乎与同时工作的用户数量有关。无法查询会话中过去的语句。通过登录测试系统,您至少可以找到事务发出的语句,然后也许可以找出它们锁定的原因。您似乎还有长期运行的事务。这本身就是个问题。试着扔掉这些,也许问题就解决了。好的,谢谢!我们现在正在建立一个日志系统来了解更多信息。对于长时间运行的事务:它们不是自然长时间运行,而是被阻止,因此长时间运行:/Yes,但它们被一个需要很长时间的事务阻止。长事务通常是一个应用程序错误。看起来你是对的。我们开始终止长时间运行的事务作为解决办法,然后开始调试和重写相关代码。现在似乎已经解决了:)
 blocked_pid |                                                                                                                                                                                             blocked_query                                                                                                                 | blocking_pid |                                                                                                                                                                                            blocking_query                                                                                                                 | blocked_mode |      blocked_query_start      |     blocking_query_start      
-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       96170 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99736 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:41:07.707156+00 | 2017-12-13 15:40:27.217027+00
       96341 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99033 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:39:04.585587+00 | 2017-12-13 15:13:19.079758+00
       96341 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99427 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:39:04.585587+00 | 2017-12-13 15:13:27.534743+00
       96341 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99439 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:39:04.585587+00 | 2017-12-13 15:13:22.371772+00
       96667 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99127 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:39:00.840949+00 | 2017-12-13 15:36:17.303978+00
       96667 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        97108 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:39:00.840949+00 | 2017-12-13 15:36:35.485022+00
       96667 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        96822 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:39:00.840949+00 | 2017-12-13 15:38:57.932188+00
       96677 | insert into "generated_table_2" ("generated_column_2_searchText", "generated_column_2_text", "generated_column_5_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        96338 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:12:22.040108+00 | 2017-12-13 15:11:36.813946+00
       96822 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99127 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:38:57.932188+00 | 2017-12-13 15:36:17.303978+00
       96822 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        96667 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:38:57.932188+00 | 2017-12-13 15:39:00.840949+00
       96822 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        97108 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:38:57.932188+00 | 2017-12-13 15:36:35.485022+00
       97110 | insert into "generated_table_3" ("generated_column_3_searchText", "generated_column_3_text", "generated_column_3_textType", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning *   |        96422 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:47:12.530821+00 | 2017-12-13 15:42:08.271596+00
       97108 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99127 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:36:35.485022+00 | 2017-12-13 15:36:17.303978+00
       97108 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        96667 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:36:35.485022+00 | 2017-12-13 15:39:00.840949+00
       97108 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        96822 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:36:35.485022+00 | 2017-12-13 15:38:57.932188+00
       99427 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99033 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:13:27.534743+00 | 2017-12-13 15:13:19.079758+00
       99427 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99439 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:13:27.534743+00 | 2017-12-13 15:13:22.371772+00
       99427 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        96341 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:13:27.534743+00 | 2017-12-13 15:39:04.585587+00
       99439 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99033 | select "id", "display_name", "user_name", "initials", "image_link", "is_image_preferred" from "users" where "id" in ($1) and "deprecated_at" is null                                                                                                                                                                      | ShareLock    | 2017-12-13 15:13:22.371772+00 | 2017-12-13 15:13:19.079758+00
       99439 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        99427 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:13:22.371772+00 | 2017-12-13 15:13:27.534743+00
       99439 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * |        96341 | insert into "generated_table_1" ("generated_column_1_searchText", "generated_column_1_text", "generated_column_4_categories", "created_at", "created_by", "display_string", "listId", "shortId", "sort_order", "updated_at", "updated_by", "uuid") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) returning * | ShareLock    | 2017-12-13 15:13:22.371772+00 | 2017-12-13 15:39:04.585587+00
id: integer
shortId: character varying(255)
uuid: uuid
display_string: text
sort_order: numeric
parent_id: integer
created_by: integer
updated_by: integer
deprecated_by: integer 
created_at: timestamp with time zone
updated_at: timestamp with time zone
deprecated_at: timestamp with time zone