似乎网络连接通常比本地磁盘寻道更快,正如问题中所讨论的那样网络现在比磁盘更快吗?
我在使用 Berkeley DB 时遇到了这个问题,Berkeley DB 是一个使用缓存机制来提高性能的嵌入式数据库。当数据库很大而内存又不够时,磁盘寻道会降低性能。
如果网络速度更快的话,我想知道是否可以将数据库放到几台远程计算机的内存中并通过网络访问它,以避免磁盘寻道。这可以作为工作站级PC的替代解决方案。
PS:我的母语不是英语。所以表达不准确,请见谅。谢谢!
答案1
根据您引用的问题和答案,通过网络联系主机可能比执行本地磁盘寻道操作更快(当然,取决于网络和所涉及的磁盘)。
对于实际工作系统来说,这并不总是意味着更快的运行——请记住,当您谈论将数据库“放入”各种分布式系统的“内存中”时(撇开可能出现的可用性和延迟问题),您必须记住这些系统将执行自己的内存管理(并且可能会将您的数据分页到本地磁盘,让您两全其美),并且可能还有其他工作要做,这将使系统资源(如网络连接)繁忙并削弱您的速度优势。
相对简单的缓存系统和尝试在多个分布式系统的内存中运行数据库(您似乎正在这样做)之间存在很大差异。一些数据库事务可能变得非常便宜(即快速),但其他数据库事务可能变得昂贵得多,并且您可能会发现,在这种系统中设计快速性能的需求会对您的数据库设计施加限制,从而抵消任何好处。
所以我的回答相当无聊:这取决于。您需要在负载下测试您的特定系统,以查看任何可能的理论性能提升是否可以转化为您特定情况下的实际性能提升。
答案2
与许多性能问题一样,这个问题的答案是:
“也许吧。衡量一下你的情况,然后找出答案。”
答案3
考虑到 memcached 的流行程度,我想说确实是的。
我的网络有超过 4 个网络跳数,我的时间不到 1ms,而 7200rpm 驱动器上的磁盘寻道可能需要 1ms(如果你极其幸运的是),从 15 毫秒(平均)到几秒钟(当扇区不可读且驱动器执行重新读取时)。
您仍然应该有一个专用的 LAN 来访问 memcached 实例。