我有一些我加入的表,我认为它们非常适合放入集群。但我也希望每周向其中插入数据。不是大量的数据——比如每周 5 到 20 条记录。我的理解是,集群对于您加入和从中选择的表很有用,但如果您打算在它们上使用 DML 语句,那么就不那么好了。
我的问题是:当 Oracle 文档说集群对于 DML 语句的使用效率不高时,他们指的是更新和删除数百条记录吗?或者插入的少量记录也属于该准则?我的问题本质上是,DML 语句的规模是否会影响集群的效率?或者它更像是一种二元情况。比如,如果我每天更新一条记录,我应该避免将我的表放在一个集群中吗?
我还没有看到一个真实世界的用户场景,其中使用集群而不是仅仅使用带有连接的常规表(或 IOT)的好处(节省一点磁盘或 I/O 或块访问)非常重要,值得麻烦处理它。
每周 5-20 条记录:这没什么。纸和铅笔可以做到这一点。
仅供参考:数据字典表使用一些集群作为标识符。这些标识符永远不会改变。它们被插入、删除,但从未更新。在某些环境中,在几秒钟或几分钟内插入/删除 5-20 条记录(由于动态创建和删除对象)而不会造成任何问题。所以每周 5-20 条记录不会有问题。问题是:您是否真的想使用几乎从未使用过的东西,甚至可能不会显着提高性能(甚至使性能变得更糟),但需要格外注意。
买者自负
每当您有架构设计想法时,运行基准测试以(反)证明其有用性。
对我来说,在实施之前需要证明使用非标准模式设计具有显着优势。
对于您非常非常小的数据量,我希望您每年只节省一些时间。
再次,运行基准测试。
TL;DR 何时使用聚簇表?从不(除非另有证明。)
聚类和分区是在庞大的数据集中创建参考的局部性。
集群将与每个键值关联的所有行存储在一起,并且根据 RDBMS,可以逐表应用作为索引,其中行是叶子或多表,其中保留多个表中每个键值的数据一起。使用集群,表仍然很大。
分区就是把桌子放在不同的空间里,所以它就像许多小桌子一样。例如,在我们按交易日划分的交易所中。这对于加速查询和流失非常有用,因为旧分区是静止的。在按日期分区时,它对于有效清除数据和回收空间以提供新的分区键值也非常方便。