cluster,也就是聚集,简单来说就是把多个表的数据行保存在同一个数据块中。在建立cluster之前需要考虑一下下面的问题。
一、选择合适的table
1、聚集中的表经常被同时查询或连接;
2、这些表并没有被频繁地被插入或更新;
二、选择合适的列作为cluster key
一个好的cluster key应该拥有足够的唯一值,这样的话一个cluster key就可以很好地充满数据块。如果该cluster key拥有的数据行很少,则数据块的填充率就会很低,导致空间的浪费;如果一个cluster key 对应的数据行很多,比如sex有male和female两种类别,则就会对应大量的数据行,这种结果跟没有建立聚集的堆表一样没有效率。
另外就是选择的列经常被连接或当作谓词,这样才会在查询的时候很好的发挥cluster的优势。
三、聚集表和聚集索引的位置
聚集表和聚集索引通常可以分别存储在不同的表空间中,如果聚集表和聚集索引可以存储在不同的存储设备中,则可以提高并发性,减少磁盘竞争,从而提高效率。
四、空间
建立聚集之前需要估计聚集可能会使用到的空间,设置SIZE和STORAGE参数。
五、创建hash cluster
在oracle 中有index cluster和hash cluster两种。在下面的情况下,比较适合创建hash cluster:
1、谓词为cluster key的等值比较,而不等值比较将会使用不到hash;
2、表的插入与更新操作比较少;