Oracle中的物联网与堆表

a1e*_*x07 2 sql sql-server oracle

在使用SQLServer很长一段时间后,我常常认为与堆表相比,聚簇表(具有聚簇索引的表)通常是更好的选择.现在我也在使用Oracle,我真的不明白为什么他们的表默认是堆.根据我的经验,我可以说表中应该堆的数量有限(再次,我主要处理SQLServer).

Oracle是否有充分的理由"强迫"(通过强制我的意思是,CREATE TABLE没有指定organization index创建堆,而SQLServer,默认情况下创建聚簇表)用户使用堆表?

[更新]
关于SQLServer的澄清 - 我可能误用"default"来描述SQL Server行为; 我知道如果指定了主键,它会创建一个聚簇索引CREATE TABLE.我的观点是,我没有指定PK是集群的.
[/更新]

此外,在SQLServer中有很多关于集群表和堆的好文章,我想知道它可以在多大程度上应用于Oracle.

非常感谢任何信息.

谢谢.

Gar*_*ers 5

Oracle的一个历史优势是其行级锁定机制,其中锁存储在数据行中(而不是存储在内存中或单独的结构中).这意味着从来没有需要"最小化"事务中的锁数,也没有将行锁升级到页(或表锁)的概念.

它的并发和恢复机制还允许它将未提交的数据写入磁盘,而不是将它们保存在内存中.

这些可以缓解群集/ btree结构化表也可以解决的相同问题.

简而言之,Oracle中的堆表与其他数据库中的堆表没有相同的问题,因此在同一物理块中共同定位相关数据不会获得相同的好处.