多个线程轮询1张表,监视其变化的问题

sinall 2007-03-05 09:37:14
有一张大表table(比如约10万条数据),现有多个线程(比如20个)定时(比如每5秒)轮询它,另有若干线程可能会不定时访问它。
其中,轮询是为了监视其变化:增、改、删。

问题:
有另一种方法,就是用触发器监视table的变化,把变化情况导入另一张表,请问这种方法的性能和原方法比,哪个更好?

或者大家有更好的办法?请不吝赐教。
...全文
450 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
多壮志 2007-03-06
  • 打赏
  • 举报
回复
我说的消息机制不是pipe(至于PIPE是否和我说的类似,不在此论),而是通过tcp的方式发送报文到接收服务器。
多壮志 2007-03-06
  • 打赏
  • 举报
回复
pipe没有使用过。 至于性能,看你的程序的效果是想怎么样的?
说实在的话,你不用触发器也是可以的,例如在客户端自己来保存修改,增加,删除的日志信息,然后通过消息机制发送给接收的服务器。总之就是看你要如何编写程序了。性能要求不是太高,时间不是太多,就不要挖空心思了。反正性能不外乎就是增加更多的资源,或者给予更多的资源。
sinall 2007-03-06
  • 打赏
  • 举报
回复
楼上说的当然合理,但是现在没办法采用这种办法了,客户端早就写好了,不可能改动了。
AFIC 2007-03-05
  • 打赏
  • 举报
回复
用触发器加oracle消息(DBMS_PIPE),
就不用轮询了。
sinall 2007-03-05
  • 打赏
  • 举报
回复
忘了说了:
倒到另外的表里,比如说temp,这时,我仍然要使用相同个数的线程来轮询,只不过现在轮询的是temp,而不是table。
intotheheart 2007-03-05
  • 打赏
  • 举报
回复
我会选起线程吧
sinall 2007-03-05
  • 打赏
  • 举报
回复
谢谢楼上,
即便是我用DBMS_PIPE,我也得主动地定时RECEIVE_MESSAGE吧?

这和触发器写入一个表有什么区别啊?
区别是不是写入表是将信息保存到表里了,而DBMS_PIPE是将数据取走后就不保存了?

那么性能方面有什么差别呢?
AFIC 2007-03-05
  • 打赏
  • 举报
回复
触发器触发到增、改、删的消息后,
通过oracle消息(DBMS_PIPE)发送给客户端,
这样不就不需要客户端轮询数据库了吗?
sinall 2007-03-05
  • 打赏
  • 举报
回复
回复人:AFIC(A Foolish In China) ( 四级(中级)) 信誉:100 2007-3-5 12:21:44 得分:0
?

用触发器加oracle消息(DBMS_PIPE),
就不用轮询了。
——————————————————————————————————————————
能否简单介绍下?

回复人:dobetterthatnthink(如果你没有那么多的选择) ( 五级(中级)) 信誉:100 2007-3-5 13:48:05 得分:0
?

为了编程方便,我会选择触发器加额外的表格。
——————————————————————————————————————————
性能方面呢?
多壮志 2007-03-05
  • 打赏
  • 举报
回复
为了编程方便,我会选择触发器加额外的表格。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧