我试图存储超过2亿个键值对。超过50%的键的值将在一周内更改,大约5%的行将被永久删除。使用传统的sql解决方案,这已经证明会导致大量的碎片,导致表膨胀(原始表大小的4倍)和一些性能问题。在SQL中解决此碎片需要相当长的停机时间。我们使用了重新编译和重组技术,但都未能跟上碎片化的步伐。此外,我需要将此数据复制到另外两个系统,这也证明是相当有问题的。
桌子的设计很简单:
密钥nvarchar(50)
VARCHAR值(最大值)
我们正在考虑使用MongoDB等其他技术,但担心会遇到类似的碎片化问题。
有人对我们如何以不同的方式来解决这个问题,从而限制碎片化有什么建议吗?

最佳答案

这是MongoDB的完美选择。
MongoDB还支持capped collections(您可以使用)。你可以在数据库中有一个对象,当你不再需要它们时,这个对象在某种意义上会滚动到视图之外。如果每周都有变化,这可能会减少对数据库的管理。

关于sql - 存储2亿个可变长度的字符串会导致碎片/表膨胀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3548951/

10-13 02:29