什么时候使用表集群?
时间:2020-03-05 18:43:18 来源:igfitidea点击:
我们如何确定何时使用表集群?有两种类型,索引和哈希,用于不同的情况。根据经验,表集群的引入和使用是否有成效?
如果没有通过这种方式设置任何表,则将其修改为使用表集群会增加设置的复杂性。但是,预期的性能收益会超过未来维护工作中增加的复杂性所带来的成本吗?
我们是否有任何喜欢的在线参考文献或者书籍能够很好地描述表集群并提供良好的实现示例?
// Oracle技巧非常感谢。
解决方案
回答
我自己没有使用过Oracle的表群集,但是我知道它的索引表群集非常类似于MS SQL Server的群集索引。也就是说,行数据是由聚簇索引的键物理地组织的。
对于那些具有相当少量的可能值(与总行数相比),其中大多数查询都希望检索具有特定值的所有行的列,这是一个理想的选择。因为所有这些行实际上都存储在一起,所以减少了磁盘I / O,特别是查找时间。
"合理小"很难定义,但是如果我们经常查询单个代码区域中的所有地址,则地址表中的邮政编码是合理的。对于国家/地区范围的地址表,选择的省/州/地区代码可能太小。
因此,我们不希望在可能值很少的列上使用它们(例如,性别的M / F),因为这样一来,群集不会为我们带来任何好处,并且可能会花费我们进行插入操作。我们也永远也不想在"自动编号"代理键列上使用集群(来自Oracle中的序列),因为这将在表的最后一个范围内创建"热点",因为所有插入都必须在此实际发生。我们也不想将群集应用于将更新的列值,因为RDBMS将必须物理移动记录以维护群集的顺序。