主键和分区键update,为什么改写成delete+insert

@论坛小助手 出于什么特性考虑要这样设计?有什么优缺点?

4 个赞

这是由主键和分区键的特殊性质决定的。先说主键,若直接修改主键值,需要重构索引树中该记录的位置,操作复杂性极高,而且更新后的主键值可能与其它记录冲突,数据库需要先检查新纪录的唯一性,这个操作和插入一条新纪录无异。再说说分区键,当更新分区键时,分区的归属可能会发生变化,如果直接修改原纪录会导致跨分区存储的矛盾以及分区局部索引失效的问题,为了提高改写效率直接删除再插入是更好的选择。

4 个赞

本身就是这样吧

3 个赞

很多数据库都是按照这个原理实现的

1 个赞

学习了!

1 个赞

学习了

1 个赞

学习

1 个赞

收获满满

1 个赞

如果出现更新主键或者分区键的场景大概率表的设计有些问题

1 个赞

append更快

1 个赞