- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 Django 应用程序中使用 Postgres 咨询锁,但似乎获取被卡住了。
我想使用 pgadmin
GUI 查看哪些锁已获取,哪些未获取。我尝试使用它,并导航到 pg_locks
并在那里四处看了一会儿,但我找不到在哪里可以看到获得了哪些锁。我怎么能看到?
最佳答案
建议锁在pg_locks
中列出,locktype = advisory
和包含锁定值的objid
:
regress=> SELECT pg_advisory_lock(12345);
pg_advisory_lock
------------------
(1 row)
regress=> SELECT * FROM pg_locks;
locktype | database | relation | page | tuple | virtualxid | transactionid | classid | objid | objsubid | virtualtransaction | pid | mode | granted | fastpath
------------+----------+----------+------+-------+------------+---------------+---------+-------+----------+--------------------+-------+-----------------+---------+----------
relation | 144654 | 11090 | | | | | | | | 2/24979 | 22097 | AccessShareLock | t | t
virtualxid | | | | | 2/24979 | | | | | 2/24979 | 22097 | ExclusiveLock | t | t
advisory | 144654 | | | | | | 0 | 12345 | 1 | 2/24979 | 22097 | ExclusiveLock | t | f
(3 rows)
regress=> SELECT objid, mode, granted FROM pg_locks WHERE locktype = 'advisory';
objid | mode | granted
-------+---------------+---------
456 | ExclusiveLock | t
12345 | ExclusiveLock | t
(2 rows)
对于双值锁,第一部分在classid
中,objsubid
是2
(而不是1
用于单参数锁):
regress=> SELECT pg_advisory_lock(123, 456);
pg_advisory_lock
------------------
(1 row)
regress=> SELECT classid, objid, mode, granted, objsubid FROM pg_locks WHERE locktype = 'advisory';
classid | objid | mode | granted | objsubid
---------+-------+---------------+--------------------
123 | 456 | ExclusiveLock | t | 2
(1 row)
更新:
mode
字段是锁定模式。
regress=> SELECT pg_advisory_lock_shared(1234);
pg_advisory_lock_shared
-------------------------
(1 row)
regress=> SELECT classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory';
classid | objid | objsubid | mode | granted
---------+-------+----------+-----------+---------
0 | 1234 | 1 | ShareLock | t
(1 row)
如果一个给定的锁根本没有被获取,那么它就没有行。
regress=> SELECT classid, objid, objsubid, mode, granted
FROM pg_locks
WHERE locktype = 'advisory'
AND objsubid = 1 /* One-argument form lock */
AND objid = 1235; /* argument = 1235 */
classid | objid | objsubid | mode | granted
---------+-------+----------+------+---------
(0 rows)
如果一个锁在等待另一个 session 时被阻止,它将有 granted = 'f'
。
您可以使用 pid
字段查看哪个进程 ID 持有/正在尝试获取锁。在 pg_stat_activity
上加入可能很有用,在 pg_locks
上自加入也很有用,可以查看哪个 session 阻止了给定的锁。
有关详细信息,请参阅 the user manual for pg_locks
。
关于django - 使用 pgadmin 检查 Postgres 建议锁的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213808/
大多数 GUI SQL 控制台允许使用如下参数/占位符 SELECT * FROM USERS WHERE USER_NAME = :USER_NAME; 您通常(例如 Toad、IntelliJ 等
如何在计算机之间(在Windows中)在pgadmin 4.2之间导入/导出服务器列表? 我找到了有关注册表的pgadmin 3的一些链接。 4也一样。 pgAdmin - Sharing DB Co
知道 pgAdmin III 是一个连接到 postgresql 服务器的客户端 postgresql,我有两个问题: pgAdmin III 是否可以自动刷新其显示的数据?如果是这样,时间间隔是多少
我有一个 posgreSQL 数据库,我正在使用 pgAdmin III 来使用它。我创建了一个名为 PrimaryKeySequence 的序列。 现在我想使用这个序列作为表中主键字段的默认值。我尝
在 pgAdmin 3 中,我可以通过以下方式自定义服务器配置 (.config): Tools -> Server configuration -> postgresql.config -> cha
我不确定如何在 pgAdmin 中激活此选项,但我不知道如何删除它。 每次我打开 pgAdmin 时,它都会遍历每个查询,这意味着我必须等待几分钟才能再次开始查询。 有人知道怎么去掉吗? 非常感谢!
我已阅读此处列出的文章: How to set connection timeout value for pgAdmin? 很多次,但我仍然不知道在哪里设置 connection_timeout 的配
如何在 pgadmin 中更改这些颜色?单击颜色不会更改或提示 RGB 选择。我在设置时无意中这样做了,但现在它让我很困扰。 最佳答案 您需要先断开与服务器的连接,然后才能单击颜色。将打开一个提示,您
我正在尝试查询我连接到的远程数据库,但是使用查询工具“连接”到数据库时遇到问题。查询工具打开,但“插头”图标保持红色并且似乎没有连接到数据库(见下图)。 我不确定这是否是描述它的最佳方式,但希望所附图
我想在 Chrome 中有一个书签来打开 pgAdmin 4。唯一的问题是,似乎每次 pgAdmin 4 本身启动时,它都会选择不同的端口(通常这不是问题,因为它会为您打开一个选项卡直接打开,但如果我
我已经使用 pgAdmin III 大约三年了,但我们现在被迫在我们的新 PC 上使用 pgAdmin 4。我缺少一些功能,而且我无法在查询工具的文档中找到这些问题的任何答案,所以我猜也许我想做的事情
刚刚在 Windows 盒子 8.3.14-1 中安装了 postgres,启动了 pgAdmin,它是我的本地语言 (PT),而不是我想要的英语。 如何更改此设置? (请注意:lc_messages
我想在 Chrome 中有一个书签来打开 pgAdmin 4。唯一的问题是,似乎每次 pgAdmin 4 本身启动时,它都会选择不同的端口(通常这不是问题,因为它会为您打开一个选项卡直接打开,但如果我
我已经使用 pgAdmin III 大约三年了,但我们现在被迫在我们的新 PC 上使用 pgAdmin 4。我缺少一些功能,而且我无法在查询工具的文档中找到这些问题的任何答案,所以我猜也许我想做的事情
如何停止 pgadmin 4 进程?我运行 pgadmin 4 下一个方法: python3/usr/local/pgAdmin4.py 我的想法是使用 Ctrl-c。 最佳答案 如果您在 mac O
每次升级 PgAdmin 4(目前为 1.5 版)时,我们都会丢失所有服务器定义以及其他配置详细信息。当一个人必须处理十几台服务器时,这非常烦人:) 我无法找到服务器定义的存储位置,所以在安装新版本之
我已经下载了 PostgreSQL 10.4,当我启动它时,pgAdmin4 在网络浏览器中打开。我想使用桌面模式,但不知道如何在 Windows 7 上使用。 有什么帮助吗? 最佳答案 我面临着同样
我在 Windows 10 专业版机器上从 pgAdmin 4 v2.1 升级到 v3。 我可以选择在安装的最后一步打开 pgAdmin。 我点击是,它会使用我的默认浏览器自动打开它。我注意到 url
我刚刚安装了最新的 pgAdmin (4.7),每当我启动它时,我都会收到这个奇怪的空白弹出窗口,我无法删除它: 我可以很好地使用该应用程序,我只需要把那个空窗口移到一边,这很烦人。我使用的是 Fir
我最近在 PGAdmin III 中发现,您可以通过按 Ctrl+Space 自动完成/激活智能感知。然而,这似乎只适用于表格。有没有办法也触发列名的智能感知? 最佳答案 pgAdmin 4 似乎在使
我是一名优秀的程序员,十分优秀!