有没有办法通过 T-SQL 和 DMV 显示针对哪个数据库运行了查询?
目标是通过数据库查询查看 CPU 和 I/O,以便我可以在重新配置环境时重新分配数据库。
如果可以的话,我不想使用跟踪、分析器或扩展事件。如果可以避免的话,我也不想分解 XML。我正在寻找历史,而不仅仅是活跃的。
有没有办法通过 T-SQL 和 DMV 显示针对哪个数据库运行了查询?
目标是通过数据库查询查看 CPU 和 I/O,以便我可以在重新配置环境时重新分配数据库。
如果可以的话,我不想使用跟踪、分析器或扩展事件。如果可以避免的话,我也不想分解 XML。我正在寻找历史,而不仅仅是活跃的。
您必须专注于内存、磁盘 IO 和 CPU 利用率以平衡您的环境。
最好的办法是开始收集结果并将其转储到实用程序数据库中,并定期使用 SQL 代理为您提供良好的基线。
或者,您可以使用性能数据收集器(适用于 sql server 2008 及更高版本)
记忆:
您可以查看缓冲池使用情况(哪些数据库在缓冲池中占用更多空间?)
来自:浪费缓冲池内存的性能问题
磁盘输入输出:
在磁盘 IO 方面,您需要将具有最多磁盘 IO 的 mdf/ldf 文件移至更好/更快的 LUN/阵列:
来自:如何从 SQL Server 中检查 IO 子系统延迟
另请参阅利用 sys.dm_io_virtual_file_stats
中央处理器:
来自:布伦特的回答
DMV 相关查询的金矿:2014 年 9 月的 SQL Server 诊断信息查询
为了完整起见,如果您使用的是 sql server 2012,则可以使用系统健康报告仪表板来可视化 sp_server_diagnostics 结果。