我知道可以通过从pg_prepared_statements
表中选择所有行来列出当前会话的所有准备好的语句,但是有没有办法查看所有活动会话的所有准备好的语句?我认为我正在寻找类似于管理员功能的东西,但是在文档中找不到任何类似的内容。
我知道可以通过从pg_prepared_statements
表中选择所有行来列出当前会话的所有准备好的语句,但是有没有办法查看所有活动会话的所有准备好的语句?我认为我正在寻找类似于管理员功能的东西,但是在文档中找不到任何类似的内容。
pg_prepared_statements
表存储,如下所示:SELECT relfilenode FROM pg_class WHERE relname = 'pg_prepared_statements';
从不同的后端返回相同的relfilenode。我感到惊讶,因为我认为准备好的语句在磁盘上没有存在。如果它们在磁盘上,我想你可以使用pageinspect contrib模块中的函数来读取原始元组或表页。可见性会是一个问题;你怎么知道与死亡/终止的后端相关的内容以及哪些是有效的?
我尝试了一下,发现pg_prepared_statements
实际上是一个视图:
regress=# SELECT * FROM heap_page_items(get_raw_page('pg_prepared_statements', 1));
ERROR: cannot get raw page from view "pg_prepared_statements"
具体来说,涉及到pg_prepared_statement()
函数的一些视图。因此没有什么需要检查的。这是后端内部。
这似乎是那种“…但你为什么要这样做?”的问题,通常这意味着有人在询问他们为解决实际问题而设想的解决方案,而不是询问他们的真正问题。
那么:为什么你想这样做?你试图解决什么实际问题?
.
你真正想要解决的问题是什么?
我有一个分区表 xxx.yyy
问题在于当我尝试执行:
VACUUM FULL VERBOSE xxx.yyy_69;
我看到:
INFO: "yyy_69": found 0 removable, 3648431 nonremovable row versions in 72968 pages
DETAIL: 0 dead row versions cannot be removed yet.
READ COMMITED
或SERIALIZABLE
隔离级别?),事务标记(你的交易开始和结束的位置是否符合预期),等等。 - Craig Ringer