Oracle Database未来的发展方向 – Exadata (2)
Kaya 发表于 os2ora.com
下一个问题,Exadata如何解决CPU方面的瓶颈呢?
在Exadata之前,我想无非两种思路,第一在原来节点上用更多更强的CPU,第二采用更多的RAC节点。
不过在Exadata的架构中,CPU的瓶颈已经从基本上得到很大的缓解,这就是存贮节点上CPU处理能力的介入。
还是以一个实际SQL为例:
SELECT t0.id FROM (SELECT id FROM t0 WHERE id LIKE '%54234245%' ) t0, (SELECT id FROM t1 WHERE id LIKE '%54234245%' ) t1, (SELECT id FROM t2 WHERE id LIKE '%54234245%' ) t2, (SELECT id FROM t3 WHERE id LIKE '%54234245%' ) t3, (SELECT id FROM t4 WHERE id LIKE '%54234245%' ) t4, (SELECT id FROM t5 WHERE id LIKE '%54234245%' ) t5, (SELECT id FROM t6 WHERE id LIKE '%54234245%' ) t6 WHERE t0.id=t1.id AND t0.id=t2.id AND t0.id=t3.id AND t0.id=t4.id AND t0.id=t5.id AND t0.id=t6.id ;
下面是一个可能的结果,第一行的数据是没有启用Smart Scan技术的结果,第二行是启用了Smart Scan的结果。
| Type | Elapsed | DB CPU% | IO(MB/s) | Cell CPU% | Network (MB/s) |
| pre-Exadata | 21s | 99 | 400 | 1 | 400 |
| Exadata | 11s | 80 | 700 | 50 | 8 |
第一行比较容易理解,存贮阵列/结点的数据以400 MB/s的速度通过Storage network传输到DB结点进行,DB CPU的利用率达到了99%。
显而易见,这时瓶颈出现在DB结点的CPU上,如果启用了Smart Scan,则Exadata会在存贮结点上首先对数据进行处理(存贮结点的CPU利用率为50%),然后把其中有效的数据以8 MB/s的速度传输到DB结点进行处理,这时DB结点的CPU利用率下降为80%。SQL的完成时间却变为原来的一半。
Exadata在这里做了哪些事情呢?
1. 只进行有效数据的传输,这里,只传输满足条件id like ‘%54234245%’的7个表的指定列 id 的数据。
2. 解决了原来pre-Exadata可能碰到的网络瓶颈问题
3. 分担了DB 节点的工作负载

最近评论