小编ret*_*ala的帖子

sp_configure 阻塞进程阈值更改对性能的影响

我的任务是识别生产服务器上发生的任何阻塞。我实现这一目标的计划是使用

EXECUTE sp_configure 'blocked process threshold', 5
Run Code Online (Sandbox Code Playgroud)

结合服务器端跟踪来收集阻塞进程报告。

我知道这项活动会影响性能,我想找到某种方法来量化这将是什么。

performance sql-server locking

9
推荐指数
1
解决办法
2315
查看次数

ASPState 数据库锁定和增长问题

我们使用 ASPState 数据库在 SQL Server 2005 群集上保留 .NET 会话状态。我们在高峰期看到一些奇怪的行为

  • DeleteExpiredSessions 过程通过代理作业每分钟运行一次。有时这项工作需要花费几分钟来运行和删除过期的会话

  • 从应用程序到 ASPState 数据库的请求非常缓慢。我相信这是因为 DeleteExpiredSessions 过程在表上持有排他锁

代码:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeleteExpiredSessions]
AS
        SET NOCOUNT ON
        SET DEADLOCK_PRIORITY LOW 

        DECLARE @now datetime
        SET @now = GETUTCDATE() 

        DECLARE @tblExpiredSessions TABLE
        (
            SessionID nvarchar(88) NOT NULL PRIMARY KEY
        )

        INSERT INTO @tblExpiredSessions (SessionID)
            SELECT SessionID
            FROM [ASPState].dbo.ASPStateTempSessions WITH (READUNCOMMITTED)
            WHERE Expires < @now

        --EXPIRED SESSION LOGGING 
        /*
        DECLARE @ExpiredSessionCount Int;
        SELECT @ExpiredSessionCount = COUNT(SessionID) 
        FROM @tblExpiredSessions; …
Run Code Online (Sandbox Code Playgroud)

sql-server locking session

8
推荐指数
1
解决办法
1万
查看次数

以编程方式查找无法在线重建的索引

我正在使用 T-SQL 自动重建和重新组织索引。我遇到了无法在线重建的索引问题。发生这种情况主要是因为包含 ntext/nvarchar 列。

有没有办法以编程方式将它们标识为该语句的一部分?对 WHERE 谓词的补充

SELECT 
--TOP 20
OBJECT_NAME(IPS.OBJECT_ID) AS [TableName], avg_fragmentation_in_percent, SI.name         [IndexName],  
schema_name(ST.schema_id) AS [SchemaName], 0 AS IsProcessed 
INTO #FramentedTableList 
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL , NULL) IPS 
JOIN sys.tables ST WITH (nolock) ON IPS.OBJECT_ID = ST.OBJECT_ID 
JOIN sys.indexes SI WITH (nolock) ON IPS.OBJECT_ID = SI.OBJECT_ID AND IPS.index_id =   SI.index_id 
WHERE ST.is_ms_shipped = 0 AND SI.name IS NOT NULL 
AND avg_fragmentation_in_percent >= CONVERT(DECIMAL,   @FragmentationThresholdForReorganizeTableLowerLimit) 
ORDER BY avg_fragmentation_in_percent DESC 
Run Code Online (Sandbox Code Playgroud)

index sql-server t-sql

5
推荐指数
1
解决办法
2413
查看次数

复制快照大小过大导致失败

我正在寻找复制快照超过我们预测的 5 倍的解释

复制失败后,我们尝试使用新快照重新初始化订阅。数据库大小为135GB,数据库中的一张表为60GB - 我们已将本文从出版物中排除。这意味着我们期望快照大小约为 75GB。

我们曾多次尝试创建快照,但由于磁盘空间不足而失败。昨晚快照用 340GB 的可用空间填充了磁盘。

我欢迎对这个巨大的快照大小的任何解释。

在检查可能的原因时,我注意到快照格式设置为“字符 - 如果发布者或订阅者未运行 SQL Server,则为必需”。尽管事实上这种跨国复制的两端都是本机 SQL Server。格式之间有大小不同吗?

提前致谢。

Native mode file Size:105 MB
C:>bcp IVM_ArchiveTest.dbo.Event out D:\NOBACKUP\UseOnce\EventNative.dat -T -n 
218977 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) 
Total : 7878 Average : (27796.01 rows per sec.) 

Character mode file Size:66 MB 
C:\>bcp IVM_ArchiveTest.dbo.Event out D:\NOBACKUP\UseOnce\EventChar.dat -T -c 
218977 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) 
Total : 1654 Average : (132392.38 rows per …
Run Code Online (Sandbox Code Playgroud)

replication sql-server snapshot

3
推荐指数
1
解决办法
3793
查看次数

使用 TOP 并获得不同的结果集

我正在尝试编写一个有效的查询来删除数据块。为此,我希望通过使用主键来获取最旧的记录来避免索引扫描。但是,我看到返回了一些意想不到的结果。

我希望这个

SELECT TOP 15 OrderID FROM [Order]
Run Code Online (Sandbox Code Playgroud)

会给我最旧的 15 条记录,因为我可以依靠主键递增,因此表中的存储顺序将从低到高。

但是,这会返回不同的结果集

SELECT TOP 15 OrderID FROM [Order] ORDER BY DateCreated ASC
Run Code Online (Sandbox Code Playgroud)

这似乎是获得我需要的结果的更准确但更昂贵的方式。

令人费解的是,这

SELECT TOP 15 * FROM [Order]
Run Code Online (Sandbox Code Playgroud)

为此提供一组不同的 OrderID (PK)

SELECT TOP 15 OrderID FROM [Order]
Run Code Online (Sandbox Code Playgroud)

我知道http://msdn.microsoft.com/en-gb/library/ms189463.aspx解释说没有 ORDER BY 子句就不能保证订单,但期望 PK 为我订购并且无法解释两者之间的差异最后两个选择子句。

sql-server t-sql top

3
推荐指数
1
解决办法
2327
查看次数

使用阻塞进程报告诊断阻塞问题

我有一个应用程序由于超时而关闭。在这些时间里,我们看到保存 ASP 会话状态的数据库的响应时间大幅增加。

为了诊断问题,我使用SP_CONFIGURE'blocked process threshold',15并运行跟踪以捕获任何触发的事件。在下一个事件期间,跟踪捕获会话状态数据库中的一些阻塞事件。

我已经确定了主要拦截器,可以看到它已暂停并等待。

<blocked-process-report>
    <blocked-process>
        <process id="process53fb4c8" 
                 taskpriority="0" logused="0" 
                 waitresource="KEY: 10:72057594039238656 (594b17b7493c)" waittime="20631"
                 ownerId="9710782702" transactionname="UPDATE" 
                 lasttranstarted="2013-06-27T17:29:38.130" XDES="0xc429df950" lockMode="U" 
                 schedulerid="14" kpid="6912" status="suspended" spid="359" sbid="0" ecid="0" 
                 priority="0" trancount="2" lastbatchstarted="2013-06-27T17:29:38.130"
                 lastbatchcompleted="2013-06-27T17:29:38.107" 
                 clientapp=".Net SqlClient Data Provider" hostname="WEB03" hostpid="7520" 
                 loginname="State" isolationlevel="read committed (2)" xactid="9710782702" 
                 currentdb="10" lockTimeout="4294967295" 
                 clientoption1="536870944" clientoption2="128056">
            <executionStack>
                <frame line="18" stmtstart="1114" stmtend="4494" 
                       sqlhandle="0x03000a00210f020741a1be0058a000000100000000000000"/>
            </executionStack>
            <inputbuf>
                Proc [Database Id = 10 Object Id = 117575457]
            </inputbuf>
        </process>
    </blocked-process>
    <blocking-process>
        <process status="suspended" waittime="1046" spid="217" sbid="0" ecid="0" 
                 priority="0" trancount="1" lastbatchstarted="2013-06-27T17:29:29.113" 
                 lastbatchcompleted="2013-06-27T17:29:29.010" …
Run Code Online (Sandbox Code Playgroud)

sql-server profiler locking session

2
推荐指数
1
解决办法
5232
查看次数