ITPub博客

首页 > 数据库 > Oracle > dblink的关联与本地关联差异

dblink的关联与本地关联差异

原创 Oracle 作者:xuexiaogang 时间:2022-05-02 20:54:23 0 删除 编辑

我的原创连接:

https://mp.weixin.qq.com/s/eHR4smuaxCYOYdMr4ADwKQ


首先申明,我反对不同主机之间的DBLink直接关联。因为中间有网络层,这样关联效果较差。遇到这种场景和需求我通常会有如下几个方案:

1、迁移到一起。

2、物化视图。(需要通过DBLink)但是在本地落地。

3、OGG同步过来。

     如果在同一主机上呢?这个比较特殊了,就比如说PDB之间。因为一个CDB上的多个PDB没有跨网络。那么这个毕竟不是本地表,这两个差多少?  


    今天实验一下。在一个PDB上建立两个表t6和t67.在另外一个PDB上建立t7连接名是con。

t6 1w条数据

t67和远程的t7表都是12w的数据。

每个表的ID都有索引。

set autotrace on  打开跟踪,执行下面的比较。

首先看本地表关联

select * from t6 a,t67 b where a.id=b.id and a.id<101;

26个一致性读(在内存)

106行

网络返回有一些数据为绿色框。


下面来看跨主机的dblink

select * from t6 c,t7@con d where c.id=d.id and c.id<101;

看到行数一样。一致性读少了(在内存)。但是多了一个递归调用。这就是DBLink产生的。可见没有什么明显的改变。


那么如果连接多个PDB呢?

再找了一个PDB,建立一个w表, 连接名是con2

select * from t6 c,t7@con d, w@con2 e where c.id=d.id and c.id=e.id and  c.id<101;

发现一致性读又少了,递归调用还是一个。这里和我最初想的不一样。我开始人为会有两个。

    所以最后结论。PDB直接的dblink和本地几乎没有差别。(我不敢说一模一样),但是就这些数据来说,如果SQL写的好,那都一样好,如果SQL写的差,那就一样的差。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2890235/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: MySQL8取消缓存
请登录后发表评论 登录
全部评论
OracleACE/PostgreSQLACE/阿里云MVP/腾讯云TVP/墨天轮 MVP/TiDBMVA/数盟会华东区长老/OpenTenBase社区委和技术委委员/架构师技术同盟名人堂成员上海地区理事会成员/if社区联合发起人/《DBA实战手记》作者/公众号:四海内皆兄弟

注册时间:2013-07-01

  • 博文量
    422
  • 访问量
    953395