顺序增加主键的性能

时间:2009-03-16 23:09:18

标签: performance database-design primary-key

寻找有关为特定密钥模式选择数据库提供程序的指导。

唯一的关键字段是预先分配的唯一顺序递增数字。 在每一天之间 将添加50和10万件物品, 处理(更新),然后保留一周左右, 通常最低编号的记录将被删除。的数量 记录不会每天波动很大,但周末可能会下降。 100M左右后,这些数字可能会回到1。

我需要找到一个数据库实现,其中索引查找的效率, 添加和删​​除保持不变。当关键值范围不断向上移动时,我是否应该担心性能可能会下降?

1 个答案:

答案 0 :(得分:2)

  

索引查找,添加和删除保持不变

你可以通过每次插入重建索引来确保它保持不变(只是一直非常慢 - 根本没有性能下降:)),或者通过每小时/每天运行索引维护等接近常量。

  

随着键值范围不断向上移动,性能可能会下降?

只要你有一个索引,它应该是logN性能 - 例如拥有1,000,000行的速度大约是1,000行的一半(搜索索引值时)。 (1,000,000,000,000将再次增加一半的速度)。

所以不,你不应该担心性能。

  

在100M左右后,这些数字可能会回到1。

好的 - 如果你想要的话。通常,不需要真正 - 只需使用一个大的int。

与性能一样:测试你想做什么。制作一个插入10,000,000行的脚本,看看会发生什么。

我的观点是,如果你打算在100M记录中包装id,你可以做的最糟糕的事实就是将它们全部分配。这也代表了碎片索引条件(你只说100K记录,但它们分布在10M的空间中) - 但你做索引/数据库维护吗?