我在我正在监视的服务器上运行了布伦特·奥扎尔工具包中的sp_BlitzCache脚本(我在该公司工作了大约3周)。该过程的结果具有以下值:
╔═════════╦═════════════╦═══════════════════╦══════════════════╦════════════════╦══════════════╦════════════╦═════════════════════╦═══════════════════╦═════════════════╦═════════════╦═══════════╦═════════════╗
║ Cost ║ #Executions ║ Executions/Minute ║ Execution Weight ║ Total CPU (ms) ║ Avg CPU (ms) ║ CPU Weight ║ Total Duration (ms) ║ Avg Duration (ms) ║ Duration Weight ║ Total Reads ║ Avg Reads ║ Read Weight ║
╠═════════╬═════════════╬═══════════════════╬══════════════════╬════════════════╬══════════════╬════════════╬═════════════════════╬═══════════════════╬═════════════════╬═════════════╬═══════════╬═════════════╣
║ 47,4959 ║ 212068 ║ 416,6365 ║ 10,9146 ║ 21883508.2710 ║ 103.1910 ║ 61,4143 ║ 47839177.6180 ║ 225.5841 ║ 73,0647 ║ 15372027688 ║ 72486 ║ 66,6277 ║
╚═════════╩═════════════╩═══════════════════╩══════════════════╩════════════════╩══════════════╩════════════╩═════════════════════╩═══════════════════╩═════════════════╩═════════════╩═══════════╩═════════════╝我取了这些值,大约下午4点我有一列显示该计划是在上午8点左右创建的(8小时窗口)。
我验证了total reads值= "15372027688“。这个是可能的吗?在8小时的时间里,我有大约150亿的阅读量?我的CPYU权重值为61,4143,成本= 47,4959。
有谁能更好地向我解释这个查询的成本,它意味着什么?是关于并行性的成本阈值吗?
还具有运行过程的警告:
我还在服务器上运行性能计数器,并与server实例有大约1400个连接。在网络适配器流量上,我的总字节约为92000,000,00/秒。
发布于 2018-03-24 16:41:58
欢迎来到堆栈交换。一般情况下,你应该尽量把你的问题限制在一个单一的,明确的问题上.在这里,您只需要为您的服务器提供一般的调优帮助,而这并不是最适合站点的。理想的情况是,问答对广大受众是有用的,而且随着时间的推移也将保持相关性。综上所述,我将回答关于逻辑读取的数量和查询成本的重要性的两个离散问题。
当然,在一个服务器上有150亿个读取的时间超过8个小时是可能的。这些读取是逻辑读取,表示对内存的操作,而不是磁盘。我刚刚在我的桌面上运行了一个随机查询,它可以立即执行大约200万次逻辑读取。推断出来会让我在8个小时内总共读580亿条逻辑数据。
查询成本是SQL Server执行查询所需完成的预期工作量的统一度量。一般来说,如果没有上下文,这个数字并不意味着什么,除非有问题,否则你不必担心它。如果你对此感兴趣的话,发动机会以不同的方式使用它。下面是我从头上知道的清单:
一般来说,除非出了什么问题,否则你不必担心这些细节。但是,有几种常见的情况下,查询成本可能是有用的。如果某些查询不是并行的,或者太多的查询是并行的,那么您可能需要根据您的工作负载来调整CTFP。如果查询速度慢,并且您能够找到一个查询提示,使得查询速度比两个查询之间的成本差更快,则可以提供有用的线索,说明为什么优化器没有自然地选择您所暗示的查询计划。如果查询速度非常慢,成本非常慢(例如,<1单位),这意味着优化器正在处理错误的信息。例如,基数估计值可能相差甚远。如果你能纠正这个坏消息,你可能会得到一个更有效的计划。
https://dba.stackexchange.com/questions/202158
复制相似问题