【发布时间】:2010-11-24 01:08:54
【问题描述】:
我们在仅运行 SQL Server 2005 的专用机器上运行应用程序的数据库。 此数据库服务器有 32 Gb 的 RAM...而数据库文件本身只有 6 Gb。
我想将几个重读/查询的表强制放入 SQL 内存缓冲区以提高速度。
我知道 SQL Server 非常擅长将必要的数据从磁盘读取后保存在内存中......但我们的客户可能更希望他们的查询在第一次运行时快速运行。 “第二次次的最快性能”并不是产品亮点。
缺少旧的“Pin Table”DBCC 命令.. 有什么想法吗?
我编写了一个“CacheTableToSQLMemory”Proc,它循环遍历表的所有索引(集群和非),在临时表中执行“选择 *”。我已安排 SQL 代理每 15 分钟运行一次“缓存大量表”进程,以尝试将页面保留在内存中。
它在很大程度上有效.. 但即使在我缓存了查询的所有相关表之后,运行查询仍然会增加该表的缓存页数。然后第二次更快。 想法?
我们正在运行 PAE 和 AWE。 SQL 设置为使用 8 到 20 GB 的 RAM。
【问题讨论】:
-
'PAE 和 AWE 设置' 如'我仍在运行具有 2GB 虚拟地址空间的糟糕 x86 实例'?
-
...我知道...我正在努力推动操作系统升级...
-
什么版本的 Windows?我希望是 64 位的,否则答案如此很明显很有趣
-
@smirkingman:“PAE”暗示 x86:“PAE 仅用于在基于 x86 的系统上运行的 32 位版本的 Windows。” msdn.microsoft.com/en-us/library/aa366796%28VS.85%29.aspx
-
好消息!根据大家的建议,我们正在测试 Windows Server 2008 x64 和 SQL 2008 x64 设置!谢谢大家的想法。
标签: sql sql-server-2005 memory-management query-optimization