2
A
回答
3
DBMS_LOCK.SLEEP
不消耗任何重要资源,使用起来非常安全。
我已经多次使用过它,从未遇到任何问题。下面的测试会创建大量的睡眠工作,但不会导致任何问题。
要测试SLEEP
功能,创造了巨大的就业量都睡在同一时间。
首先,确保数据库可以支持大量的作业。有几个参数可能会限制这一点。检查以下参数:
select name, value
from v$parameter
where name in ('job_queue_processes', 'processes', 'sessions')
创建1000个等待30秒的预定作业。
begin
for i in 1 .. 1000 loop
dbms_scheduler.create_job(
job_name => 'JOB_'||i,
job_type => 'PLSQL_BLOCK',
start_date => systimestamp,
enabled => true,
job_action => 'begin dbms_lock.sleep(30); end;'
);
end loop;
end;
/
现在看到有多少作业正在运行:
select count(*) from gv$session where schemaname = user;
select count(*) from dba_scheduler_running_jobs where owner = user;
在我的桌面上我只得到239点的工作。由于原始参数不是1000,但我认为239仍然是一个很好的“大”值。
即使在所有这些活动中,我都没有注意到任何性能问题,Oracle使用的CPU不到1%。
+1
很好的答案。唯一的事情是,在睡觉之前不应该有任何交易或锁定,否则可能会阻止某些东西。 –
相关问题
- 1. 是否是setlocale线程安全函数?
- 2. PHP函数error_log()是否安全使用?
- 3. 内部函数声明是否安全?
- 4. 删除history.back()函数是否安全?
- 5. 函数`arc4random`系列是否安全?
- 6. Python 3的input()函数是否安全?
- 7. 使用“不安全”线程函数是否安全?
- 8. ConcurrentHashMap是否完全安全?
- 9. C++模板函数是否是线程安全的?
- 10. Context.MODE_PRIVATE是否安全?
- 11. const_cast是否安全?
- 12. BrowserID是否安全?
- 13. Locale.setDefault()是否安全?
- 14. Titanium.App.Properties是否安全
- 15. AfxBeginThread是否安全?
- 16. signed_request是否安全?
- 17. PhoneGap是否安全?
- 18. Redux是否安全?
- 19. session_set_cookie_params是否安全?
- 20. 将“太多”参数传递给外部函数是否安全?
- 21. 使用函数访问数据库值是否安全?
- 22. DBMS_LOCK.SLEEP vs UNIX sleep
- 23. PLSQL函数声明
- 24. PLSQL中的(+)函数
- 25. 将nullptr分配给函数指针变量是否安全?
- 26. .NET中的这个函数是否安全共享?
- 27. 使用注释来解释Javascript中的函数是否“安全”?
- 28. MSVC的时间函数是否线程安全?
- 29. 是否安全的记录这在构造函数中的值
- 30. 是否有一个安全的“mkdir()”类似的函数?
它会做空闲的等待。不过,“不良副作用”有点宽泛。对于线程何时被唤醒有一个相当大的不确定性 - 例如,如果你睡了几秒钟,你可能会在十分之一秒后醒来。如果你睡了几秒钟,就不需要担心了。 –
在我的情况下,精度并不重要。我正在处理一个系统超载另一个系统导致其崩溃的情况。我正在寻找一种方法来优雅地“扼杀”在目标系统上抛出多少东西。睡眠似乎是做这件事的理想方式。 – Jeff
这可能是完全合理的。根据问题的范围,您可能需要一个进程可以将消息排入队列的异步队列,而另一个进程(或多个进程)可以稍后再出队。这样,消费者流程就可以自我调节,而不需要生产者知道如何节制。 –