Intelligent Data Placement(智能数据放置)就是我们所说的IDP,其实并非是Exadata专有的东西,而是Oracle 11gR2 中ASM的一个新特性。IDP旨在优化对数据访问路径,从而提高数据访问的效率,以达到最佳性能。IDP包含以下特性。
将访问频繁的数据放置在磁盘的最外圈,称之为“热区”(hot zone),访问不频繁的数据放置在磁盘的最内圈,称之为“冷区”(cold zone)。因为磁盘的最外圈访问速度是最快的——同样转速的磁盘,外圈扇区的面积比内圈要大。
将有类似访问模式的数据放置在物理上临近的区域,以减少延迟。
IDP允许将不同的extents放置在冷热不同的区域中。在传统的ASM正常冗余的模式下,一份数据包括两份镜像:primary extents和mirroring extents。通常情况下,ASM只会读取primary extents的数据,只有当primary发生了故障或者不可用的时候,ASM才会读取mirroring extents。如果将primary extents放置在磁盘的热区,将mirroring extents放置在磁盘的冷区,这样就能提高数据的访问效率。
需要注意的是,以上IDP优化仅仅是针对使用ASM冗余的裸盘而言,对于已经条带化的磁盘,通常无从区分物理磁盘的最外圈和最外圈,这种情况下IDP没有太多意义。
传统的ASM的IDP也并非是完全智能的,很多工作需要人工进行干预。例如需要设置一个模板来对磁盘组指定冷热区域,如下:
SQL> ALTER DISKGROUP data ADD TEMPLATE dataf?ile_hot ATTRIBUTE ( HOT MIRRORHOT); 或者使用手工方式对文件进行冷热区域的指定: SQL> ALTER DISKGROUP data MODIFY FILE '+data/oracle/dataf?ile/users.256.670157303' ATTRIBUTE ( HOT MIRRORHOT);
在Exadata的ASM属性中,有两个字段用来自动控制IDP的行为:一个是IDP.BOUNDARY,其默认值为auto;另外一个是IDP.TYPE,其默认值为dynamic,但如果使用的是interleaving griddisk,则IDP.TYPE默认值为static。虽然两个属性在其他环境中也存在,但是只对Exadata生效,并且在Exadata上,可以自动对其进行维护,无需用户通过手工方式对其进行调整。