我目前使用很多存储在多个文件位置的perl二进制散列文件来将数据加载到这个cgi网站。我正在讨论,如果我决定在mySQL上存储我的数据,它会更快还是更慢。
有什么见解吗?我知道perl散列是完全加载到内存中的。
戈登
发布于 2011-02-15 05:13:24
使用数据库意味着您的查找将会更慢,但是您的脚本将使用更少的内存。
使用内存中的散列意味着您的查找将会更快,但是您的脚本将使用更多的内存。
如果你没有记忆问题,并且你的散列永远不会变得更大,那么继续使用它们。
如果你没有记忆问题,你的哈希会变得更大,那么考虑使用数据库。
如果你的记忆有问题,可以使用数据库。
如果你想为了使用数据库而使用数据库(即学习新技能),那么就使用数据库。
发布于 2011-02-15 07:46:13
如果使用Perl散列来处理您的数据需求,那么您可能不需要一个成熟的SQL数据库的开销。有很多用于键>值存储的存储替代方案,例如Berkley DB和整个"NOSQL“运动。用谷歌搜索一下,你会发现很多信息。CPAN中存在许多这样的Perl接口。
发布于 2011-02-15 18:59:59
严格地说,从速度上讲,在直接的内存散列中找到单个完全匹配的键是最好的,除非您的数据可以放入数组中。(即,它将仅由一系列数字键访问,这些数字键形成从0开始的几乎连续的范围。)
如果您可能需要搜索多个可能的关键字(例如,姓名和员工ID),或者如果您需要执行不是严格基于相等的搜索(例如,“查找所有姓为‘Smith’的员工”),那么需要通过散列关键字进行搜索将大大减慢您的速度,并且数据库将开始看起来更好。
总体性能的另一个因素是,您提到您的哈希“存储在多个文件位置”。如果您只执行一次或几次查找,那么将散列从这些文件读取到内存中也需要时间,这再次使事情倾向于使用数据库,这将最小化从磁盘读取的不需要的数据量。
因此,这在很大程度上取决于您需要如何访问数据和访问模式。
https://stackoverflow.com/questions/4997266
复制相似问题