2010-05-21 86 views

回答

1

是的,当索引不适合内存或进行全表扫描时。对不在内存中的数据进行聚合功能也需要很多(也可能是随机的)光盘读取。

对于一些基准:

查询时间将显著 取决于是否受影响的数据目前 驻留在内存或磁盘访问是需要 。对于磁盘密集型 操作,磁盘顺序和随机I/O性能的特性也很重要。

http://www.sql-server-performance.com/articles/per/large_data_operations_p7.aspx

那里,不要指望,如果你的数据库大小> RAM大小相同的性能。

编辑: http://highscalability.com/充满了类似的例子:

一旦数据库不适合RAM你碰了壁。

http://highscalability.com/blog/2010/5/3/mocospace-architecture-3-billion-mobile-page-views-a-month.html

或者在这里:

即使DB大小比RAM容量更大仅有10%这个测试显示了2.6倍的性能下降。 http://www.mysqlperformanceblog.com/2010/04/08/fast-ssd-or-more-memory/

虽然,请记住,这是针对热门数据,您要查询的数据并且不能缓存。如果可以的话,你可以轻松地生活在更少的记忆中。

-1

所有数据库操作都必须通过写入磁盘进行备份,有更多的RAM有帮助,但不是必需的。

+1

但是读取操作如何?如果数据不在内存中,则必须对光盘进行读取访问,这比从RAM中读取要慢1000倍? – 2010-05-21 08:10:00

2

只有工作集或公用数据或当前使用的数据需要放入缓冲区缓存(又名数据缓存)。这也包括索引。

还有计划缓存,网络缓存+其他的东西也。 MS已经在SQL Server的内存管理上投入了大量工作,并且它运行良好,恕我直言。

一般来说,更多的RAM会有所帮助,但这不是必需的。

-1

将整个数据库加载到RAM中是不实际的。数据库最近可能高达1TB。任何人都不会购买这么多的内存。即使可用RAM的大小是数据库大小的十分之一,我认为性能仍是最佳的。

+0

那里我们必须切换到NoSQL的替代品吗?如果必须从光盘读取数据库,数据库如何高效? – 2010-05-21 08:14:31

+0

即使可用RAM的大小是数据库大小的十分之一,我认为性能仍然是最佳的。 – TrustyCoder 2010-05-21 08:15:10

+0

@CarlHörberg:你在做什么?你几乎永远不会拥有内存中的所有数据,也不需要它。 – gbn 2010-05-21 09:32:05