0

我在服务器中有一些数据库。此服务器有 16GB RAM,此系统仅用作数据库服务器。

在使用不同的数据库一段时间后,我发现大部分 RAM 空间(大约 14GB)都被使用了,如果我使用其他应用程序并再次工作,我将无法使用我的计算机并且它挂断了。

如何找出哪个数据库的 RAM 使用率更高,然后如何找出哪个查询使这些资源满了?

4

2 回答 2

1

sys.dm_exec_query_stats 表(2005 年以后)中有一些有用的信息,可用于查找正在运行的查询在 IO、经过时间等方面最密集。

例如尝试运行这个(查看最近 25 个查询运行的详细信息):

SELECT DISTINCT TOP 25 t.TEXT AS query, s.*
FROM   sys.dm_exec_query_stats s
       CROSS APPLY sys.Dm_exec_sql_text(s.sql_handle) t
ORDER  BY s.last_execution_time DESC
于 2012-04-12T08:56:30.823 回答
1

Sql Profiler 是一个漂亮的工具,用于分析数据库中的哪些查询。

set statistics time on

set statistics io on

set statistics profile on

当您发现一个您认为很慢的查询时,统计数据是一种分析特定查询的好方法。

你不知道哪些查询是最重的吗?你真的应该仔细检查你的代码,看看你运行了什么样的 for 循环、子查询或其他怪异的查询,并从你认为很重的地方出发。并在 Sql Server Management 中测试这些...

于 2012-04-12T08:20:36.747 回答