Oracle Database未来的发展方向 – Exadata (1)
Kaya 发表于 os2ora.com
Exadata应该说代表着Oracle Database未来的发展方向。这句话可不是一句广告词,依我看来,Exadata完全有这个资格享受这种待遇。
一个计算系统,最主要的是追求CPU,IO,Network之间的平衡。使这些计算资源能充分地发挥潜能。比如说,如果IO的扫描能力能达到10GB/s,如果存贮阵列到计算结点的带宽不能达到10GB/s,那么IO的扫描能力就不能得到充分发挥。又比如,如果CPU每秒钟只能处理6GB/s的数据量,10GB/s的IO扫描能力也不能能到充分发挥。
对一个计算系统另一个重要的衡量指标是如何有效地利用计算资源,这同样地包括CPU,IO,Network。比如说,虽然Network可以达到每秒10GB/s的带宽,但如果这些数据都是无效的(与本次操作无关的其它业务数据),那么这只是对网络带宽的浪费。这就涉及到一个重要的课题:如何高效地利用最少的计算资源在最适当的时候对数据进行操作。
在原来Oracle Database的基础上,为满足上面提到的两个基本点,Exadata进行了富有创新的对基本设施的改进。举一个例子,当数据刚从存贮结点扫描出来时,马上进行初步的加工,把无效的数据丢弃。同时,Exadata推出了一个实现了CPU,IO,Network之间平衡的典型的机器配置。这可以说是Oracle为业界推出了自己在Oracle Database的最佳实践的一个最佳解决方案。
那么,Exadata如何解决Network方面的瓶颈呢?
首先是Infiniband的运用。一个Infiniband的端口一般可以提供2GB/s的流量,这是千兆网的16倍以上,4Gb的光纤网络的5倍以上。
同时,Exadata只进行有效数据的传输,最具体讲,则是Smart Scan 技术的运用。举个例子,对于下面这个查询
SELECT a.no, sum(case when a.KEY IN ('A') then a.score * 2 else a.score * 5 end) score FROM fact_table a GROUP BY a.no
下面是一个可能的结果,第一行的数据是没有启用Smart Scan技术的结果,第二行是启用了Smart Scan的结果。
| Type | Elapsed | DB CPU% | IO(GB/s) | Storage CPU | Storage Network(GB/s) |
| Non-Exadata | 90s | 57 | 7 | 1 | 7 |
| Exadata | 45s | 81 | 11 | 30 | 4 |
第一行比较容易理解,存贮阵列/结点的数据以7GB/s的速度通过Storage network传输到DB结点进行,DB CPU的利用率达到了57%。
显而易见,这时瓶颈出现在存贮网络上,如果启用了Smart Scan,则Exadata会在存贮结点上首先对数据进行处理(存贮结点的CPU利用率为30%),然后把其中有效的数据以4GB/s的速度传输到DB结点进行处理,由于DB结点接收到更多的有效数据(90*7/45=14GB/s),CPU也变得更加繁忙起来(81%)。
Exadata在这里做了哪些事情呢?
1. 只进行有效数据的传输,这里,只传输表fact_table里三列的数据(no, key和score)
2. 解决了原来pre-Exadata可能碰到的网络瓶颈问题
3. 让DB结点的CPU更加高效的利用起来

为什么exadata的IO比pre-Exadata的IO大呢(11GB/s vs 7GB/s)?
因为对于pre-exadata碰到了存贮网络的瓶颈,这里的均值已经达到了7GB/s。也就是说,pre-exadata的IO带宽由于网络瓶颈的原因不能完全发挥出来。
而在exadata的情形下,由于cell丢弃了大部分无用的数据,从而让存贮网络不再成为瓶颈.