问题:如何确定SQL Server中的读取密集表和写入密集表?
答:在最近的咨询服务中,确实有人问我这个问题。我最喜欢做全面数据库性能运行状况检查的工作,我每天都会遇到新人,并帮助他们解决SQL Server性能问题。在工作了这么多年之后,我可以轻松地说,我已经看到了与此主题相关的几乎每个问题。最近,我的一位客户问我,是否可以帮助他们从其SQL Server数据库确定读密集型表和写密集型表。
当然,我可以。多年前,我已经为其他客户准备了脚本,并且可以轻松地与他们共享脚本。今天我也要与大家分享相同的脚本。
1个 SELECT OBJECT_SCHEMA_NAME(s.object_id) AS SchemaName,
2 OBJECT_NAME(s.object_id) AS TableName,
3 SUM(s.user_seeks + s.user_scans + s.user_lookups) AS Reads,
4 SUM(s.user_updates) AS Writes
5 FROM sys.dm_db_index_usage_stats AS s
6 WHERE objectproperty(s.object_id,'IsUserTable') = 1
7 AND s.database_id = db_ID()
8 GROUP BY OBJECT_SCHEMA_NAME(s.object_id), OBJECT_NAME(s.object_id)
9 ORDER BY Reads DESC, Writes DESC
当您运行上面的脚本时,它将返回带有四列的以下结果集。
第一列代表架构名称,第二列代表表名称。接下来的两列表示对该表的读取和写入次数。请注意,查询很有可能会读取100行或更新1000行,但是由于DMV以单个数字增量跟踪数据访问,因此读取和写入的计数器将仅更新一个数字。
来源:皮纳尔·戴夫
最后修改时间:2019-11-18 10:20:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。