寻找有关为特定密钥模式选择数据库提供程序的指导。
唯一的关键字段将是一个预先分配的唯一顺序递增的数字。每天将添加、处理(更新)50 到 100,000 个项目,然后保留一周左右,之后通常会删除编号最低的记录。记录的数量每天不会有很大的波动,但在周末可能会下降。在 100M 左右之后,这些数字可能会回到 1。
我需要找到一个数据库实现,其中索引查找、添加和删除的效率保持不变。我是否应该担心随着关键值范围不断向上移动,性能可能会下降?
寻找有关为特定密钥模式选择数据库提供程序的指导。
唯一的关键字段将是一个预先分配的唯一顺序递增的数字。每天将添加、处理(更新)50 到 100,000 个项目,然后保留一周左右,之后通常会删除编号最低的记录。记录的数量每天不会有很大的波动,但在周末可能会下降。在 100M 左右之后,这些数字可能会回到 1。
我需要找到一个数据库实现,其中索引查找、添加和删除的效率保持不变。我是否应该担心随着关键值范围不断向上移动,性能可能会下降?
索引查找、添加和删除保持不变
您可以通过在每次插入时重建索引来确保它保持不变(只是一直非常慢 - 根本没有性能下降:)),或者通过每小时/每天运行一次索引维护等来接近恒定。
随着关键值范围不断向上移动,性能可能会下降?
只要您有一个索引,它就应该是 logN 性能——例如,拥有 1,000,000 行的速度大约是 1,000 行速度的一半(搜索索引值时)。(1,000,000,000,000 将再次是该速度的一半)。
所以不,你不应该担心性能。
在 100M 左右之后,这些数字可能会回到 1。
好的 - 如果你愿意。一般来说,真的不需要 - 只需使用一个大整数。
与性能一样:测试你想要做什么。编写一个插入 10,000,000 行的脚本,看看会发生什么。
我的观点是,如果您要将 id 包装在 100M 记录中,那么您能做的最糟糕的事情实际上就是将它们全部分配。这也将代表碎片索引条件(您只有 100K 记录,但它们分布在 10M 的空间中)-但是您将进行索引/数据库维护对吗?