我们从我们的 django 后端和 lambda 连接到我们的 Postgresql (RDS) 服务器,有时 django 后端查询超时,我运行以下查询来查看锁:
SELECT
pg_stat_activity.client_addr,
pg_stat_activity.query
FROM pg_class
JOIN
pg_locks ON pg_locks.relation = pg_class.oid
JOIN
pg_stat_activity ON pg_locks.pid =
pg_stat_activity.pid
WHERE
pg_locks.granted='t' AND
pg_class.relname='accounts_user'
这给了我 30 行从 lambda 执行的简单选择查询,如下所示:
SELECT first_name, picture, username FROM accounts_user WHERE id = $1
为什么这个查询持有锁?我应该担心吗?
我正在使用 pg8000 库从 Lambda 连接
with pgsql.cursor() as cursor:
cursor.execute(
"""
SELECT first_name, picture, username
FROM accounts_user
WHERE id = %s
""",
(author_user_id,),
)
row = cursor.fetchone()
# use the row ..
我在 Github 上打开了一个问题,可能是因为我使用错误的库。https://github.com/tlocke/pg8000/issues/16