- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们最近遇到了一些性能问题,因此我一直在更密切地监控我们的事件。我一直在运行 AskBrent 脚本并得到报告“有人运行 DBCC FREEPROCCACHE”,因为计划缓存非常年轻。使用 dm_exec_query_stats 进一步深入研究,我发现计划缓存每隔几秒就会频繁清空。我在服务器上运行了跟踪,并且在同一时间段内没有运行任何 DBCC 命令。
有人知道还有什么可能导致计划缓存如此频繁地清空吗?
该数据库支持生产中的许多繁忙网站。在我们的暂存环境(运行相同的代码)中,计划缓存已经有几天了。在我们的开发环境中,缓存存在几分钟或几个小时的时间,这并不奇怪。我们在集群中运行 SQL Server 2008 R2 Standard。
最佳答案
@Raspin:一种可能性是服务器内存有限,并且有很多“不同的”SQL 计划(未参数化或无法自动参数化的查询的执行)。
可能有太多"new"计划,而 SQL Server 正在刷新“旧”计划。 (除 DBCC FREEPROCCACHE 之外,还有其他操作会导致计划被刷新。如果存在内存压力,则未重用的临时计划将是第一个从缓存中逐出的计划。)
我推荐此 Microsoft 白皮书进行相关讨论:
http://technet.microsoft.com/en-us/library/ee343986(v=sql.100).aspx
我不确定“集群”如何影响计划缓存;我相信每个 SQL Server 实例都有自己的计划缓存。
<小时/>无法“自动参数化”的语句在白皮书的附录A中列出。
我的猜测(只是猜测)是“不同”SQL 语句的数量淹没了计划缓存。我敢说很多语句永远不会被重复使用。
在我的服务器上,我会使用 dm_exec_cached_plans 来收集缓存中计划的一些快照 [ http://technet.microsoft.com/en-us/library/ms187404(v=sql.105).aspx]在很短的时间间隔内,并比较快照。
条目数量是否保持相对恒定,缓存是否已满,或者是否在某个时刻真正被“清除”。计划缓存中的任何语句是否被重用? (我认为输出包含一个“usecounts”列,表明语句正在重新执行。)
我还会收集短时间间隔内执行的 SQL 语句的跟踪信息,并进行检查。大多数语句是参数化的还是自动参数化的?或者他们中的大多数都是带有文字的单例。
SELECT *
FROM sys.dm_exec_cached_plans
WHERE cacheobjtype = 'Compiled Plan'
ORDER BY objtype
大多数计划都是 objtype = 'Adhoc' 吗?如果计划不被重用,那么当存在内存压力时,这些计划最有可能被驱逐。
<小时/>性能问题真的是计划被从缓存中“清除”了,还是真的有其他问题,比如 SQL 语句的绝对数量、SQL 语句本身的性能、锁的争用、闩锁、空闲缓冲区等。
<小时/>关于sql-server - 是什么不断清除我的 SQL Server 计划缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23295852/
我的程序有问题。 我有一个比较两个字符串的条件: (if (eq? (exp1) (exp2))) 当 exp1 给我一个字符串,exp2 给我一个字符串。可以肯定的是,当我更改“eq?”时到“=”,
我们有多种主要使用 GWT 开发的产品,目前由我们的最终客户使用。 想知道 GWT 的路线图。我得到了一些非官方的更新,谷歌正在将 GWT 中开发的产品转移到其他一些新技术。这是真的吗? GWT 的长
我希望每 15 分钟定期构建一次。我在网上看过,我正在使用这个时间表:*/15 * * * * Jenkins 告诉我使用 H/15 * * * * 来平均分配负载而不是 */15 * * * * 有
所以我正试图在 Scheme 中找出整个 call/cc 的东西。下面是我正在使用的代码: (+ 1 (call/cc (lambda (k) (if (number? k)
所以我正试图在 Scheme 中找出整个 call/cc 的东西。下面是我正在使用的代码: (+ 1 (call/cc (lambda (k) (if (number? k)
我们有一个 Azure WebJob,计划在 UTC 每天上午 8:00 运行(CRON - 0 00 08 * * *)。大多数时候它都会正确触发,但有时会触发两次(第二次运行)第一次运行后约 10
我是 Terraform 的新手。我正在尝试通过 azure 管道创建一个简单的存储帐户,但是当我运行我的管道时,我收到错误“太多命令行参数”。我很震惊,我不知道自己做错了什么。有人可以帮忙吗。 这是
我想在某些逻辑中间停止芭蕾舞 Actor 程序。如何使用代码停止 ballerina 中正在运行的程序?我正在寻找相当于 java 中的 System.exit(0) 的东西。 最佳答案 我相信您正在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我们有一个 Azure WebJob,计划在 UTC 每天上午 8:00 运行(CRON - 0 00 08 * * *)。大多数时候它都会正确触发,但有时会触发两次(第二次运行)第一次运行后约 10
我是 Terraform 的新手。我正在尝试通过 azure 管道创建一个简单的存储帐户,但是当我运行我的管道时,我收到错误“太多命令行参数”。我很震惊,我不知道自己做错了什么。有人可以帮忙吗。 这是
我正在浏览 htdp 并在一开始的某个地方发现了这个:- Explain why the following sentences are illegal definitions: 1. (define
我正在使用 Laravel 开发成员(member)门户。 成员(member)资格有不同的类别,例如1) 单人2) 成人3) 家庭以及不同价格的所有类型。 我有一个 plans 表和 plans_s
我使用 DreamHost 作为我的网站的服务器,并且我尝试每天、每周和每月执行某个 MySQL 查询来更改我的网站的数据库。我开始在本地主机上使用事件调度程序,然后我发现我无法在 DreamHost
这周我的 crontab 作业发生了一个问题。 设置如下,每两周正常运行一次,直到现在。 10 06 * * 1 test $(($(date +\%W)\%2)) -eq 0 && echo 'te
编写了一个简单的脚本,它将在日志文件中写入日期时间戳,并且每次运行该脚本时,它都会附加到该日志文件中。 #!/bin/sh echo $(date) >> log.txt 当我尝试每 1 分钟安排一次
我对 PIPE 的了解是它用于单向通信,它有助于在两个相关进程之间进行通信。我从一本书中得到了下面的 PIPE 编程代码示例。我正在尝试使用 printf 理解代码并在代码的每一行之后打印出所有点。但
代码如下: (define make-simple-sv-num (lambda (delare) (let ((tal (random-from-to 100000 1000000)))
我目前正在使用“How To Design Programs”——使用 Scheme/Racket;我在 Scheme 的 R5RS 版本中遇到了一个非常奇特的功能。 在进行简单的减法时,尽管使用的是
我想确定时间表的详细信息。例如: 我有一个事件的时间表:event.schedule "Every 3 months on the 10th day of the month" 由哈希表示: {
我是一名优秀的程序员,十分优秀!