【发布时间】:2010-02-09 14:51:56
【问题描述】:
我找不到问题的好标题,这就是我想要做的:
- 这是 .NET 应用程序。
- 我需要存储多达 200000 个对象(3KB-500KB 之间)
- 我需要每秒从多线程中存储大约 10 个
- 我在存储之前使用二进制序列化
- 稍后我需要通过一个唯一的整数 ID 访问它们
最好的方法是什么?
- 我无法将它们保留在内存中,因为我会遇到内存不足异常
- 当我将它们作为单独的文件存储在磁盘中时,可能会出现哪些性能问题?它会大大降低整体性能吗?
- 我是否应该实现某种缓存,例如组合 100 个对象并将其作为一个文件写入一次。然后稍后解析它们。或者类似的东西?
- 应该使用数据库吗? (访问时间并不重要,不会有搜索,我只会通过已知的唯一 ID 访问几次)。理论上我不需要数据库,我不想让这个复杂化。
更新:
- 我认为数据库会比文件系统慢,如果您对此有所了解,请证明我错了。所以这就是为什么我也倾向于文件系统。但我真正担心的是每秒将 200KB*10 写入 HDD(这可以是任何 HDD,我不控制硬件,它是一个桌面工具,将部署在不同的系统中) .
- 如果我使用文件系统,我会将文件存储在单独的文件夹中以避免与文件系统相关的问题(因此您可以忽略该限制)
【问题讨论】:
-
唯一ID是提供给我们的,还是我们必须自己生成?如果我们必须生成它,它是否需要在系统重启后仍然存在?
-
unique id 已经被提供,它不需要在重启后存活。它只是在应用程序运行期间需要。
-
注意骗局,但请参阅:stackoverflow.com/questions/2230032/…
-
你会编辑或删除记录吗?
-
@Albin 在用户完成该过程后从不编辑而是删除所有记录。
标签: .net performance memory storage