PostgreSQL9.4: 增加 pg_sleep_for(interval) , pg_sleep_until(timestamp) 延迟执行函数

之前版本仅支持 pg_sleep(seconds) 延迟执行函数, PostgreSQL 9.4 版本增加两个延迟执行函数,支持指定复杂的延迟。

pg_sleep_for(interval)
pg_sleep_until(timestamp with time zone)

  • pg_sleep(seconds): 当前会话延迟执行指定秒,以秒为单位指定
  • pg_sleep_for(interval): 支持更大的时间延迟,以 interval 形式指定。
  • pg_sleep_until(timestamp with time zone): 指定时间被唤醒。

测试 Pg_sleep

1
2
3
4
5
6
7
8
9
10
11
12
13
[pg94@db1 ~]$ psql francs francs
psql (9.4beta1)
Type "help" for help.

francs=> /timing
Timing is on.

francs=> select pg_sleep(10);
 pg_sleep 
----------
(1 row)

Time: 10020.590 ms

备注: 延迟执行 10 秒。

测试 Pg_sleep_for

1
2
3
4
5
6
7
francs=>  select pg_sleep_for('2 min');
 pg_sleep_for 
--------------

(1 row)

Time: 120046.302 ms

备注:延迟执行 2 分钟钟。

测试 Pg_sleep_until

1
2
3
4
5
6
7
8
9
10
11
12
francs=>  select now();
              now              
-------------------------------
2014-05-27 14:03:14.013931-07
(1 row)

francs=> select pg_sleep_until('2014-05-27 14:05:00');
 pg_sleep_until 
----------------
(1 row)

Time: 102027.964 ms

备注:延迟执行到指定时间,用法非常简单。

查看 Pg_stat_activity

1
2
3
4
5
6
postgres=# select pid, datname,usename,query_start,query,state,waiting from pg_stat_activity where state='active' and pid <> pg_backend_pid() order by query;
 pid  | datname | usename |          query_start          |                     query                     | state  | waiting 
------+---------+---------+-------------------------------+-----------------------------------------------+--------+---------
 4464 | francs  | francs  | 2014-05-27 14:01:26.987006-07 | select pg_sleep_for('2 min');                 | active | f
 4693 | francs  | francs  | 2014-05-27 14:01:22.992145-07 | select pg_sleep_until('2014-05-27 14:03:00'); | active | f
(2 rows)

备注: 在之前函数还未执行完成的时候查询 pg_stat_activity,说明函数处于运行状态。

参考

原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/238066.html

(0)
上一篇 2022年1月30日
下一篇 2022年1月30日

相关推荐

发表回复

登录后才能评论