我想知道是否有办法衡量一个功能的性能。在部分。
我知道您可以衡量完成该功能所需的总时间,但有没有办法测量某个功能中的各个队列?
只是想知道,因为我找不到功能性能的瓶颈。
答案 0 :(得分:1)
大多数情况下,当您看到估算执行计划与实际执行计划之间存在重大差异时,这是因为您的统计数据尚未(不)更新。因此,SQL Server不知道哪些表具有很少的数据,哪些表是巨大的,等等,并且更有可能生成虚假计划(估计的和实际的),或者错误估算估计的计划成本。实际计划是基于计划的实际,准确的成本,但是当计划距离最佳计划非常远时,这种准确性对于确定瓶颈的价值非常小。
要更正此问题,请发出UPDATE STATISTICS
语句或执行sp_updatestats
程序。
无论您是否有最新的统计信息,查看您的函数的100%实际值很可能是空数据库或几乎空数据库的影响。
在优化性能时,请确保您的数据库使用大量数据进行准现实填充(每个表的记录数量是生产数据的两倍;但保持预期的粗略比例)。使用空的或完全不成比例地过度夸大的数据库寻找性能瓶颈没有多大意义;查询计划会有所不同,即使计划恰好相同,瓶颈也可能不在生产中。