在我的一个应用程序中,我有一个用于参考数据的1GB数据库表。它拥有大量的读取数据,但没有写入过。我想知道是否有任何方法可以将数据加载到RAM中,以便不必从磁盘访问数据?将只读数据库表加载到内存中
我正在使用SQL Server 2005
在我的一个应用程序中,我有一个用于参考数据的1GB数据库表。它拥有大量的读取数据,但没有写入过。我想知道是否有任何方法可以将数据加载到RAM中,以便不必从磁盘访问数据?将只读数据库表加载到内存中
我正在使用SQL Server 2005
如果你有足够的RAM,SQL将突出抓好确定所要加载到RAM中,哪些寻求在磁盘上。
这个问题被问了很多,它让我想起人们试图手动设置他们的进程将运行在哪个“核心” - 让操作系统(或在这种情况下,数据库)执行它的设计。
如果您想验证SQL实际上是在读你的查找数据进行缓存,那么你就可以启动负载测试,并使用Sysinternals的FileMon,Process Explorer和Process Monitor验证1GB的表没有被读取。出于这个原因,我们有时会将我们的“查找”数据放到一个单独的文件组中,以便在磁盘上访问时很容易监控。
希望这会有所帮助。
您将要看看memcached。这就是很多巨大的(和规模很大的)网站用来处理像这样的问题。如果您有几台备用服务器,您可以轻松设置它们以将大部分数据保存在内存中。
http://en.wikipedia.org/wiki/Memcached
DBCC PINTABLE将明确地将一个表固定在核心中,如果你想确保它仍然被缓存。
只是为了澄清问题的SQL2005和高达:
此功能中引入了在SQL Server 6.5版 性能。 DBCC PINTABLE具有高度不需要的 副作用。这些包括可能损坏缓冲池的 。 DBCC PINTABLE不是必需的,并已删除 以防止其他 问题。该命令 的语法仍然有效,但不会影响 服务器。