过度使用DBLINK带来的问题123

今天在编写代码的过程中,遇到一个比较纠结的问题:Java搭建数据连接访问数据库和dblink访问数据库那个效率高一点?于是,自己百度到一些东西,分享给大家

【百度内容】

     dblink开发上不是很难。如果是表结构和数据的变化不是很大,而且数据量不是很多的情况下可以考虑dblink。实践中告诉我dblink不是很稳定。数据库出现问题以及数据库的链接断开等很多因素都能导致dblink中断。
用java程序来控制当然非常灵活而且稳定。而且可以记录详细的日志。并对数据上传做好记录,对数据的重传等机制的控制都能做的很好。
所以如果是简单的两个系统之间数据量不是很大的情况下用dblink比较简单,迅速
如果是数据库复杂,牵扯到多个数据库的传递和修改。那最好是用程序来控制吧。

大量使用dblink的缺点如下:

1. 大量消耗数据库资源;

本地系统每通过DBLINK链接远端系统一次,都会生成一个本地session,如本地session不退出或者手动释放,只有通过session超时才能自动释放,会浪费大量的系统资源

2. 容易出现数据库BUG;

大量使用DBLINK,本地系统极易出现ORA-02068、ORA-03113、ORA-02080、ORA-02054、ORA-02050等Oracle错误,这种错误大部分会影响当前session正在处理的业务

3. 性能较差;

由于使用DBLINK,本地系统在获取数据时,每次链接都会对远端数据库进行一次全表扫描,且所有数据都会传输回本地数据库内,导致性能降低并且严重浪费当前系统资源。尤其出现一条sql语句从两个DBLINK中取数,更被称之为“性能杀手”,尤其是OLTP型数据库

4. 数据传输不稳定,占用带宽严重,容易产生丢包风险;

DBLINK本身没有数据存储、监控等功能,是通过网络中的数据库进行传输时,如果在传输过程中出现数据丢包现象,DBLINK本身不会发现,只用当业务进行完毕才能发现丢包现象,这样会影响当前正在处理的业务;另外,通过DBLINK查询的数据会像数据全部传至本地数据库进行操作,数据传输量很大,占用带宽严重,可能会导致网络堵塞

5. Oracle数据功能受限

DBLINK本身不支持对oracle LOB大对象的操作,在使用PROCDURE时,使用COMMIT等操作时可能会出现错误;

6. 可扩展性较差

如果多系统之间 使用DBLINK进行传输,每增加一个系统,都会增加一个或多个DBLINK链接或者修改对应的接口程序,如果修改其中一个接口,需要修改所有关联系统内的接口程序;

7. 维护性差、安全性较低

通过DBLINK进行链接需要将远端数据库用户名、密码、IP地址存在本地数据库,如远端进行密码修改、IP地址变更,本地数据库也需要修改,如果系统较多,每个系统都需要同时修改。切本地数据库管理员能够看到远端数据的密码、IP地址,对系统安全产生影响。

【自己见解】

个人倾向于使用Java程序搭建本地数据库连接,具体原因如下:

1.本地搭建数据库连接,对于跨库操作属于并行操作;dblink属于串行操作;

2.本地搭建数据库连接,直接操作数据库,比较高效;dblink需要借助当前数据库在去访问,自然前一个数据库的性能直接影响到要访问的数据库;

3.访问数据量比较大的数据表,dblink连接的查询会超时,虽然直连数据库查询很慢,但是一定可以查到结果(亲测);

以上是我的观点和看法,欢迎各位大佬指点迷津

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值