0

我对 SQL Server 2008 进行了压力测试,我想知道由于临时表和变量的使用,到 tempdb 的数据流是什么。

统计信息也显示在活动监视器中:

在此处输入图像描述

是否有可能以某种方式记录数据并随后对其进行分析?我有两个案例:

  1. 记录一个 SQL Server 计数器(我不知道它的名字是什么)
  2. 从活动监视器以某种方式记录数据
4

3 回答 3

2

写入数据库并不等于磁盘 IO 与 1 比 1。数据库只更新脏的内存页面,这些页面后来被惰性写入器或在检查点复制到磁盘。唯一写入磁盘的是 Write Ahead Log 活动,每个数据库都有一个特定的计数器:Log Bytes Flushed/sec。请注意,它tempdb具有特殊的日志记录要求,因为它永远不会恢复,因此它只需要撤消信息。每当脏页被实际刷新时,无论是在检查点还是由惰性写入器,也有特定的计数器:检查点页面/秒惰性写入/秒。这些不是每个数据库,因为这些活动本身不是“每个数据库”。最后是虚拟文件统计 DMV:sys.dm_io_virtual_file_stats它提供了每个数据库(包括 tempdb)的每个单独文件的 IO 操作总数和字节数。

您提到您想要衡量临时表和表变量的具体影响,但您将无法将它们与其他 tempdb 活动(排序线轴、工作表等)分开。我建议您阅读 Working with tempdb in SQL Server 2005,因为它仍然适用于 SQL 2008。

于 2011-03-29T21:57:25.540 回答
0

如果您使用性能监视器 (perfmon.exe) 来监视 SQL Server 计数器,则可以将其配置为记录到 .csv 文件以在 Excel 中分析(例如)

有问题的性能计数器是 SQLServer:Databases 下的 Data File(s) Size

于 2011-03-29T13:25:58.577 回答
0

我会定期将一些间隔“快照”(使用以下 DMV)加载到表中,以确定您对 tempDB 的内部使用情况。

sys.all_objects 
sys.dm_db_file_space_usage
sys.dm_db_task_space_usage

sys.dm_db_task_space_usage 将按 SPID 等分解使用情况。

于 2011-03-29T14:36:57.203 回答