我试图从pg_stats_activity获得当前的查询,但没有像预期的那样工作。
在事务之外,一切都正常:
pagetest=# select query from pg_stat_activity where pid = pg_backend_pid() and 1 is not null;
query
------------------------------------------------------------------
我在试着监视PostgreSQL。 当我想查询会话数时,我发现了一条SQL: select count(*) as session_count
from (
select sess_id
from pg_stat_activity
group by sess_id
) as activity; 但sess_id在最新版本中不存在。 sess_id是否被另一个字段替换?我可以用另一种方式检查会话的数量吗?
我运行: select *
from pg_stat_activity 还有一些旧的查询(仍然在数据库后台运行),他们的python应用程序不存在(应用程序崩溃或停止,没有调用连接关闭命令) State wait_event backend_type
Active null parallel_backend 有没有办法关闭他们的进程不再存在的所有查询? 我看到了这篇文章: Kill a postgresql session/connection 但我不想杀死所有会话或连接,因为有一些连接可以收集和更新重要数据。 我只想关闭他们的进程不再存
查找PostgreSQL存储的更多连接信息。
我确实找到了这些查询:
SELECT datname, numbackends
FROM pg_stat_database
WHERE numbackends > 0
ORDER BY numbackends DESC, datname
SELECT datname, COUNT(*) AS numbackends
FROM pg_stat_activity
GROUP BY datname HAVING COUNT(*) > 0
但是我想找出哪些脚本或IP正在连接或当前连接到PostgreSQL,有什么东西可以捕获这些信息吗?
如何终止特定PostgreSQL用户的所有DB活动?
我知道如何选择他们:SELECT * FROM pg_stat_activity WHERE usename='foo_user'?
我在这里发现了这个:https://stackoverflow.com/a/35319598/633961
我所做的是首先通过SELECT * FROM *FROM pg_stat_activity =‘active’检查正在运行的进程;找到要终止的进程,然后键入:选择pg_cancel_backend(),如果进程无法终止,请尝试:选择pg_terminate_backend(process
在pg_stat_activity中,我可以看到客户机正在使用游标完成一些查询结果。但是我如何才能看到原始查询是什么呢?
pipeline=> select pid, query from pg_stat_activity where state = 'active' order by query_start;
pid | query
-------+-----------------------------------------------------
SELECT pg_cancel_backend(SELECT pid
FROM pg_stat_activity
WHERE state not like 'idle%'
AND query NOT ILIKE '%pg_stat_activity%'
AND age(clock_timestamp(), query_start) > interval '600 minutes');
代码失败
SQL Error [42601]: ERROR: syntax error at or near "SELECT"
Posi
我正在尝试找出每月postgresql用户登录详细信息的总数,但我无法找到。我也检查了pg_stat_activity表和其他表,但没有得到详细信息
select count(*) as session_count
from (
select sess_id
from pg_stat_activity
group by sess_id
) as activity;
使用此查询时,我得到的结果是sess_id不存在。我使用的是postgresql 13
我想创建集成测试,这样我就可以在我的数据库中创建单个模型的1000条记录。
对于我的settings.py文件,我已经指定在运行测试时使用相同的数据库default。
if 'test' in sys.argv or 'test_coverage' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgres
我想不断地跟踪postgres中的相互锁。
我偶然发现了一篇文章,并尝试运行以下查询:
SELECT bl.pid AS blocked_pid,
a.usename AS blocked_user,
kl.pid AS blocking_pid,
ka.usename AS blocking_user,
a.query AS blocked_statement
FROM pg_catalog.pg_locks bl
JOIN pg_catalog.pg_stat_activity a ON a.pid =
由于连接,我无法删除红移数据库:
Couldn't drop my_db : #<ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR: database "my_db" is being accessed by other users
我(通过psql)连接到同一集群的另一个数据库,并检查我的挂起会话的pid:
my_other_db=# select procpid from pg_stat_activity where datname='my_db';
procpid
----
在查询中,我可以使用inet_server_addr()返回服务器的IP地址。
在查询中,我可以使用什么来确定连接是否是ssl加密的。
select inet_server_addr() as 'server_inet_address', ??? as 'connection_ssl_status';
我有一张有几百万排的桌子。
我有一个名为time_from_device (类型为timezone with time stamp)的列
id | name | t1 | t2 | t3 | time_from_device |
---------------------------------------------
现在我想添加一个名为created_at的列,它的值将是now()
但是,在将created_at的默认值设置为now()之前,我希望用time_from_device - INTERVAL '1 hour'填充现有的行created_at
所以我要做的是
AL
select secure_decrypt_log_id_seq.nextval,**v.PROGRAM**,
'CONTRACT_PAYMENT_ID = '||to_Char(:new.CONTRACT_PAYMENT_ID), sysdate, user, **v.MACHINE**, ls_transaction_type
from v$session v
where v.sid = (select sid from **v$mystat** where rownum = 1) 我在PostgreSQL中找不到等价的函数。上面的代码是oracle的,我找不到任何适
我正在尝试获取阻塞和阻塞用户的用户名,但是我得到了一个空数组。 这是我尝试过的: select pid,
usename,
pg_blocking_pids(pid) as blocked_by, (select usename from
pg_stat_activity where pid=ANY(pg_blocking_pids(pid)))
from pg_stat_activity
where cardinality(pg_blocking_pids(pid)) > 0; 嵌套的select返回null。 这就是如果我查询选择手动插入PID值,如下所示 sel
你能让我知道,我怎样才能在PL/pgSQL函数(一些$whoexecuted)中获得函数执行客户端(仅限单个客户端)的详细信息?我正在获取当前所有活跃客户的详细信息。如以下代码所示。
begin
select ps.usename, ps.client_addr,ps.application_name from pg_stat_activity ps
where state = 'active'
and ps.usename in('user1') into pg_stat_activity_rowtype
;
当查看pg_stat_activity时,如何判断状态IDLE IN TRANSACTION是否是瞬态的?
表的列能给我提供这些信息(例如xact_start或query_start)吗?顺便说一下,对于所有这些查询,waiting设置为f。也许这意味着他们没有等待任何锁,所以一切都很好?
我试图确定IDLE IN TRANSACTION问题在我的应用程序中有多严重。具有这种状态的pg_stat_activity中有很多行,但是每次我重新查询表时,都会有新的信息。我需要一种更精确的方法来衡量某些查询是IDLE IN TRANSACTION多长时间。