SQL 2008 RTM 临时表

Rob*_*own 1 sql-server-2008 tempdb temporary-tables

今天我使用 Cacti 在我们的 SQL 服务器上实现了一个监控解决方案,我注意到的第一件事是临时表的数量增加了,在我们的测试系统上仅仅 3 小时内,我们在临时数据库中增加了 300 多个临时表。我还注意到 SQL Server 在这 3 小时内的内存增长是巨大的 - 3 小时后使用了 15 GB。

当我运行 SP_WHO 时,只有 3-4 个用户在测试系统上进行测试,并且向应用程序打开了大约 5 个连接。

什么可能导致这种情况?我对临时数据库中的对象进行了查询,所有名称都与 #XXXXXXXXX 类似,我在某处读到这些来自表变量(声明 @myTable...)

有什么方法可以检查为什么我们的临时表数量会增加以及是什么原因造成的?在此阶段的任何帮助将不胜感激。

我明天将安装 2008 年的服务包,希望能解决问题。

mrd*_*nny 6

临时表的使用将完全取决于在 SQL Server 上拥有数据库或使用 SQL Server 的应用程序。例如,监控应用程序本身在收集数据时可能会使用数十个临时表。

至于内存使用情况,默认情况下,SQL Server 将根据需要使用尽可能多的内存。每次需要修改数据时,它都会将该数据加载到内存中,然后将该数据保留在内存中,直到 SQL Server 需要该内存用于其他用途。换句话说,高内存使用不需要担心,因为它是完全正常的。也就是说,您需要限制 SQL Server 可以访问的内存量,这样它就不会使用服务器上的所有内存。