小编Ras*_*pin的帖子

什么一直在清理我的SQL Server计划缓存?

我们最近遇到了一些性能问题,所以我一直在密切关注我们的活动.我一直在运行AskBrent脚本并获得报告"有人运行DBCC FREEPROCCACHE",因为计划缓存非常年轻.使用dm_exec_query_stats进一步深入研究我发现计划缓存每隔几秒就会频繁清空.我在服务器上运行跟踪,并且在同一时间段内没有任何运行任何DBCC命令.

任何人都知道还有什么可能导致计划缓存如此频繁地清空?

该数据库支持生产中的许多繁忙网站.在我们的暂存环境(运行相同的代码)中,计划缓存已有数天之久.在我们的开发环境中,缓存在几分钟或几个小时之间,这并不令人惊讶.我们在群集中运行SQL Server 2008 R2 Standard.

sql-server caching sql-server-2008-r2

10
推荐指数
1
解决办法
4747
查看次数

Coldfusion 10中可重现的CFQUERYPARAM性能问题

我一直能够通过Coldfusion 10查询SQL Server 2008 R2来重现严重的参数化性能问题,并且有兴趣知道其他人得到了什么.代码如下.

测试做了什么? 它创建一个包含100行的表.除一个数据列外,数据列均为空白.然后它运行Coldfusion查询10次,一半使用cfqueryparam,一半使用简单的字符串.它返回一个列表,其中包含每个响应时间.当我运行它时,除了初始调用之外,参数化查询的运行速度要慢得多(大约10-100次).

SQL Server中发生了什么? 我可以看到SQL服务器没有区别.在这两种情况下,计划缓存指示几乎相同的计划(一个显然是参数化的),并且剖析器显示两者的快速响应.然而,Coldfusion与参数化查询斗争.

什么解决了这个问题? 奇怪的是,如果我将varchar更改为nvarchar,问题就会消失.或者如果我将非空白移动到开头,则两个响应都很慢(如图所示).如果我将所有记录留空或非空白,那么问题就不存在了.它必须是混合物.我不能在CF9中重现这个问题,但还没有尝试过CF11.

<cfset datasource="yourdatasource" />
<cfquery name="createdata" datasource="#datasource#">
    --EMPTY PREVIOUS TESTS
    IF OBJECT_ID('aaatest', 'U') IS NOT NULL
    BEGIN
        TRUNCATE TABLE aaatest;
        DROP TABLE aaatest;
    END

    --CREATE TABLE TO CONTAIN DATA
    CREATE TABLE [dbo].[aaatest](
        [id] [int] NOT NULL,
        [somedata] [varchar](max) NULL,
        [somekey] [int] NOT NULL
    ) ON [PRIMARY];

    --INSERT 100 ROWS WITH 99 BLANK AND 1 NON-BLANK
    WITH datatable AS (
        SELECT 1 id
        UNION all
        SELECT id + 1
        FROM …
Run Code Online (Sandbox Code Playgroud)

sql-server coldfusion sql-server-2008-r2 coldfusion-10

7
推荐指数
1
解决办法
536
查看次数