小编Ben*_*nor的帖子

有没有办法以编程方式将SQL Server查询计划转换为图像?

我希望能够将SQL Server查询计划从XML转换为图像.理想情况下是矢量格式,但位图可以.

有没有一个开源库来做到这一点?或者我可以使用其中一个SQL Server Management Studio DLL吗?

谢谢.

.net sql-server ssms sql-execution-plan

16
推荐指数
1
解决办法
1799
查看次数

SQL Server执行计划中的物理运算符:什么是重新绑定,倒带和执行次数?

我正在尝试理解SQL Server执行计划中的物理运算符.这个页面非常有帮助:

http://technet.microsoft.com/en-us/library/ms191158.aspx

SSMS 2008显示了SSMS 2005中未显示的一些物理运算符属性:Estimated Number of ExecutionsNumber of Executions.但这些实际上意味着什么,它们与重新组合和回卷有何关系?

Estimated Number of Executions特别有趣,因为它似乎没有存储在XML中.那怎么算呢?它似乎等于Estimated Rebinds + Estimated Rewinds + 1.0.但如果是这样的话,为什么Number of Executions不等于Actual Rebinds + Actual Rewinds + 1

谢谢.

sql-server sql-server-2008 sql-execution-plan

12
推荐指数
1
解决办法
5511
查看次数

在这种情况下,READ UNCOMMITTED/NOLOCK是否安全?

我知道快照隔离可以解决这个问题,但我想知道在这种特殊情况下NOLOCK是否安全,这样我就可以避免开销.

我有一个看起来像这样的表:

drop table Data

create table Data
(
    Id BIGINT NOT NULL,
    Date BIGINT NOT NULL,
    Value BIGINT,
    constraint Cx primary key (Date, Id)
)

create nonclustered index Ix on Data (Id, Date)
Run Code Online (Sandbox Code Playgroud)

表格没有任何更新.删除可能会发生,但它们永远不应该与SELECT竞争,因为它们会影响表的另一个较旧的末尾.插入是常规的,并且(Id,Date)索引的页面拆分非常常见.

我有一个标准INSERT和SELECT之间的死锁情况,如下所示:

select top 1 Date, Value from Data where Id = @p0 order by Date desc
Run Code Online (Sandbox Code Playgroud)

因为INSERT获取关于CX(日期,标识;值)一个锁,然后IX(ID,日期),但SELECT获取关于IX(ID,日期),然后CX(日期,标识;值)的锁.这是因为SELECT首先寻找Ix然后加入到Cx上的搜索.

交换聚集和非聚集索引会打破这个循环中,但它不是可接受的解决方案,因为它会与其他(更复杂)选择引入周期.

如果我将NOLOCK添加到SELECT中,在这种情况下是否会出错?它可以返回:

  1. 不止一排,即使我要求TOP 1?
  2. 没有行,即使存在并且已经提交了?
  3. 最糟糕的是,一行不满足WHERE子句?

我已经在网上做了很多关于这个的阅读,但是我看到的(一个,两个)过度或不足的异常的唯一复制涉及扫描.这只涉及寻求.杰夫阿特伍德有一篇关于使用NOLOCK 的帖子,引起了很好的讨论.我对Rick Townsend的评论特别感兴趣:

其次,如果您读取脏数据,那么您运行的风险就是读取完全错误的行.例如,如果您的select读取索引以查找您的行,那么更新会更改行的位置(例如:由于页面拆分或对聚簇索引的更新),当您选择读取实际数据行时,它要么不再存在,要么完全不同!

这是否可以仅使用插入,并且没有更新?如果是这样,那么我想即使我在一个只插入表上的搜索也可能是危险的.


更新:

我试图找出快照隔离的工作原理.它似乎是基于行的,其中事务读取表(没有共享锁!),找到他们感兴趣的行,然后看看他们是否需要从tempdb中的版本存储中获取旧版本的行.

但在我的情况下,没有行会有多个版本,所以版本存储似乎没有意义.如果找到没有共享锁的行,那么仅使用NOLOCK会有什么不同?

sql-server deadlock sql-server-2005 read-committed-snapshot

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