- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大约有 350 万行的表。在数据库上启用了锁分区 [1]。该表在白天有很多插入,而且我在锁分区上遇到了很多死锁。这些类型的死锁在 http://sqlindian.com/2012/07/07/deadlocks-involving-lock-partitions/ 中有很好的描述。但是作者说这些类型的死锁极为罕见。在我们的例子中,它们似乎并不罕见!
我可以使用跟踪标志 1229 禁用锁分区,但不建议这样做。有没有人对如何避免这些类型的死锁有一些建议,或者我如何进一步分析情况以了解为什么我们会遇到这么多“罕见”类型的死锁?
[1] http://msdn.microsoft.com/en-us/library/ms187504(v=sql.105).aspx
更新:添加示例死锁图
<deadlock>
<victim-list>
<victimProcess id="process5004748" />
</victim-list>
<process-list>
<process id="process5004748" taskpriority="0" logused="0" waitresource="OBJECT: 5:1423344135:0 " waittime="3008" ownerId="2379819613" transactionname="user_transaction" lasttranstarted="2013-03-14T09:28:55.803" XDES="0x77ab8f950" lockMode="X" schedulerid="11" kpid="5416" status="suspended" spid="507" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-03-14T09:28:55.817" lastbatchcompleted="2013-03-14T09:28:55.807" clientapp=".Net SqlClient Data Provider" hostname="ExampleHost" hostpid="8664" loginname="ExampleUser" isolationlevel="read uncommitted (1)" xactid="2379819613" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack>
<frame procname="" line="1" stmtstart="616" stmtend="1504" sqlhandle="0x020000002468011b993c824e2e0ce3fd2783a30e8e591641" />
<frame procname="" line="1" sqlhandle="0x000000000000000000000000000000000000000000000000" />
</executionStack>
<inputbuf>
(@p0 datetime,@p1 bigint ...) INSERT INTO tblExample (Column1, Column2, ...); select SCOPE_IDENTITY()
</inputbuf>
</process>
<process id="processd4a988" taskpriority="0" logused="0" waitresource="OBJECT: 5:1423344135:10 " waittime="3008" ownerId="2379819595" transactionname="user_transaction" lasttranstarted="2013-03-14T09:28:55.663" XDES="0x2fe4323b0" lockMode="X" schedulerid="2" kpid="6756" status="suspended" spid="473" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-03-14T09:28:55.677" lastbatchcompleted="2013-03-14T09:28:55.667" clientapp=".Net SqlClient Data Provider" hostname="ExampleHost" hostpid="8664" loginname="ExampleUser" isolationlevel="read uncommitted (1)" xactid="2379819595" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack>
<frame procname="" line="1" stmtstart="616" stmtend="1504" sqlhandle="0x020000002468011b993c824e2e0ce3fd2783a30e8e591641" />
<frame procname="" line="1" sqlhandle="0x000000000000000000000000000000000000000000000000" />
</executionStack>
<inputbuf>
(@p0 datetime,@p1 bigint ...) INSERT INTO tblExample (Column1, Column2, ...); select SCOPE_IDENTITY()
</process>
</process-list>
<resource-list>
<objectlock lockPartition="0" objid="1423344135" subresource="FULL" dbid="5" objectname="" id="lock5d745ae00" mode="X" associatedObjectId="1423344135">
<owner-list>
<owner id="processd4a988" mode="X" />
</owner-list>
<waiter-list>
<waiter id="process5004748" mode="X" requestType="wait" />
</waiter-list>
</objectlock>
<objectlock lockPartition="10" objid="1423344135" subresource="FULL" dbid="5" objectname="" id="lock55da8ea00" mode="IX" associatedObjectId="1423344135">
<owner-list>
<owner id="process5004748" mode="IX" />
</owner-list>
<waiter-list>
<waiter id="processd4a988" mode="X" requestType="wait" />
</waiter-list>
</objectlock>
</resource-list>
</deadlock>
begin transaction with isolation level: ReadUncommitted
INSERT INTO tblExample
(Column1,
Column2,
Column2,
Column3,
Column4,
Column5,
Column6,
Column7,
Column8,
Column9,
Column10,
Column11,
Column12,
Column13,
Column14,
Column15,
Column16,
Column17,
Column18,
Column19,
Column20,
Column21)
VALUES ('2013-03-14T12:47:26.00' /* @p0 */,
NULL /* @p1 */,
75 /* @p2 */,
'Test Text with some characters' /* @p3 */,
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22' /* @p4 */,
2130706433 /* @p5 */,
NULL /* @p6 */,
NULL /* @p7 */,
0 /* @p8 */,
'Test Title' /* @p9 */,
'11223344' /* @p10 */,
0 /* @p11 */,
'2013-03-14T12:47:26.00' /* @p12 */,
0 /* @p13 */,
'2013-03-14T12:47:26.00' /* @p14 */,
'en' /* @p15 */,
'2013-03-14T12:47:26.00' /* @p16 */,
0 /* @p17 */,
'SomeName' /* @p18 */,
NULL /* @p19 */,
917278 /* @p20 */,
2805683 /* @p21 */);
select SCOPE_IDENTITY()
commit transaction
最佳答案
假设尽职调查(即您正确地进行了调查),让我们清楚地说明我们在谈论 lock partitioning ,不是 partition locking .
不幸的是,除了确保您运行的是最新的 SP 和最新的 CU,您无能为力。最好是最新的产品版本。这方面有很多修复。如果您为 SP 应用最新的 SP 和最新的 CU 并且问题仍然存在,请联系产品支持。
I could disable lock partitioning with trace flag 1229, but that's not recommended
关于sql-server - 锁分区死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406146/
我有类似下面的代码: ... id: myComponent signal updateState() property variant modelList: [] Repeater { mo
我正在处理一些我无法展示的私有(private)代码,但我已经制作了一些示例代码来描述我的问题: 主.c: #include #include #include #include typede
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: what are the differences in die() and exit() in PHP? 我想
在编写 Perl 模块时,在模块内部使用 croak/die 是一个好习惯吗? 毕竟,如果调用者不使用 eval block ,模块可能会使调用它的程序崩溃。 在这些情况下,最佳做法是什么? 最佳答案
我有一些搜索线程正在存储结果。我知道当线程启动时,JVM native 代码会代理在操作系统上创建新 native 线程的请求。这需要 JVM 之外的一些内存。当线程终止并且我保留对它的引用并将其用作
我刚刚花了很多时间调试一个我追溯到 wantarray() 的问题。 .我已将其提炼为这个测试用例。 (忽略 $! 在这种情况下不会有任何有用信息的事实)。我想知道为什么wantarray在第二个示例
我看到一些代码是这样做的: if(something){ echo 'exit from program'; die; } ...more code 和其他只使用 die 的人: if
我正在尝试将此表格用于: 如果任何 $_POST 变量等于任何其他 $_POST 变量抛出错误。 如果只有几个,那不是问题,但我有大约 20 个左右所以如果我想这样做,我将不得不像这样 但这
每次我运行: hadoop dfsadmin -report 我得到以下输出: Configured Capacity: 0 (0 KB) Present Capacity: 0 (0 KB) DFS
我是一名优秀的程序员,十分优秀!