有一张大表table(比如约10万条数据),现有多个线程(比如20个)定时(比如每5秒)轮询它,另有若干线程可能会不定时访问它。
其中,轮询是为了监视其变化:增、改、删。问题:
有另一种方法,就是用触发器监视table的变化,把变化情况导入另一张表,请问这种方法的性能和原方法比,哪个更好?或者大家有更好的办法?请不吝赐教。
其中,轮询是为了监视其变化:增、改、删。问题:
有另一种方法,就是用触发器监视table的变化,把变化情况导入另一张表,请问这种方法的性能和原方法比,哪个更好?或者大家有更好的办法?请不吝赐教。
倒到另外的表里,比如说temp,这时,我仍然要使用相同个数的线程来轮询,只不过现在轮询的是temp,而不是table。
就不用轮询了。
? 用触发器加oracle消息(DBMS_PIPE),
就不用轮询了。
——————————————————————————————————————————
能否简单介绍下? 回复人:dobetterthatnthink(如果你没有那么多的选择) ( 五级(中级)) 信誉:100 2007-3-5 13:48:05 得分:0
? 为了编程方便,我会选择触发器加额外的表格。
——————————————————————————————————————————
性能方面呢?
通过oracle消息(DBMS_PIPE)发送给客户端,
这样不就不需要客户端轮询数据库了吗?
即便是我用DBMS_PIPE,我也得主动地定时RECEIVE_MESSAGE吧?这和触发器写入一个表有什么区别啊?
区别是不是写入表是将信息保存到表里了,而DBMS_PIPE是将数据取走后就不保存了?那么性能方面有什么差别呢?
说实在的话,你不用触发器也是可以的,例如在客户端自己来保存修改,增加,删除的日志信息,然后通过消息机制发送给接收的服务器。总之就是看你要如何编写程序了。性能要求不是太高,时间不是太多,就不要挖空心思了。反正性能不外乎就是增加更多的资源,或者给予更多的资源。