10.3.1 分区和插入性能
考虑插入的性能。Sybase最早对于分区的努力将能追溯至版本11.0,它旨在帮助查询性能。尽管如此,真正的驱动原因是降低或消除堆表最后一页的竞争。那时,Sybase仅支持全页锁定(APL),因此,并发的表插入常常被序列化到表的最后一页上。但是,它充其量只是些许的帮助,因为对于不断增加的数据元素,索引竞争依然存在(例如顺序列或当前时间)。随着11.9版本中数据行锁定的发布,通过分区来解除竞争的需求不再。但是,11.x/12.x中的轮循分区模式对插入性能帮助很大,因为它使用用户的SPID来决定用户数据将插入哪个分片中。不幸的是,在ASE 12.5及之前的版本,没有办法分别将特定的分区分片放置于与其他分片不同的指定段上—因此,没有达到完整的IO并发效果。ASE 15.0改进了轮循分区,支持不同分区放置于不同段,映射至不同设备上,从而支持IO并发。
使用分区需要考虑的一个方面就是使用全局索引或本地索引。全局索引—缺省项—通过单独的b-树结构实现如图23。

图23 分区表上的全局索引

图24 分区表上的本地(分区)索引
正如所展示的,索引作为一个整体未分区的结构存储。另一方面,本地(分区)索引使用了与附表相同的分区模式和分区键进行分区。本地索引的结果类似,如图24。
注意索引本身是分区的。每种方法各有优劣,如表18。

表18 全局、本地(分区)索引优劣
在本地索引中(2),(3)部分的优势需要进一步解释为何其优势不如期望的那么大。根据每个分区的行数和索引键大小,本地分区可能中间级别的节点较少—即“较小”的索引高度。……