我正在创建一个应用程序,它必须将最多 32 GB 的数据放入我的数据库中。我正在使用 B 树索引,因为读取将有范围查询(比如从 0 < 时间 < 1 小时)。
开始时(数据库大小 = 0GB),我将获得每毫秒 60 和 70 次写入。在说 5GB 之后,我测试过的三个数据库(H2、berkeley DB、Sybase SQL Anywhere)的速度真的减慢到每毫秒不到 5 次写入。
问题:
- 这是典型的吗?
- 如果我删除了索引,我还会遇到这个可扩展性问题吗?
- 造成这个问题的原因是什么?
注意事项:
每条记录由几个整数组成
最佳答案
是的;索引以插入时间为代价改善了获取时间。您的数字听起来很合理 - 不知道更多。
您可以对其进行基准测试。您需要存储合理数量的数据。考虑是否根据查询建立索引——大量获取和少量插入?在 where 子句可能使用它的任何地方索引。轻取,重插入?可能避免索引。混合工作量;对其进行基准测试!
在进行基准测试时,您需要尽可能真实或真实的数据,无论是在体积上还是在数据域上(数据分布,例如,不仅仅是所有“henry smith”,而是各种名称)。
关于数据库可伸缩性 - 性能与数据库大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217531/