索引视图导致死锁

简介:

背景:

  开始并不在意索引视图会导致死锁。

问题:

  出现死锁,update t1 表尽然发现会去锁t2表从而导致死锁。

原因:

  是因为索引视图才会导致死锁问题。单从update的执行计划也能看出问题

例子:

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
create  table  t1(id  int  primary  key ,a  int )
create  table  t2(id  int  primary  key ,a  int )
go
 
CREATE  VIEW  [dbo].[DLV_AllProductItems]
WITH  SCHEMABINDING
AS
SELECT        a.id,a.a,b.id  as  idb,b.a  as  ab
FROM             dbo.t1 a
     inner  join  dbo.t2 b  on  a.id = b.id
 
 
 
GO
 
create  unique  clustered  index  ix  on  t(id)
update  t1  set  a=1  where  id =1

  




    本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/p/6238339.html,如需转载请自行联系原作者




相关文章
|
索引 Go
索引视图导致死锁
背景:   开始并不在意索引视图会导致死锁。 问题:   出现死锁,update t1 表尽然发现会去锁t2表从而导致死锁。 原因:   是因为索引视图才会导致死锁问题。单从update的执行计划也能看出问题 例子:    create table t1(id int primary key,a ...
1010 0
|
10月前
|
存储 数据库 索引
事务、视图和索引
事务、视图和索引
|
SQL 运维 安全
MySQL索引及视图
MySQL索引及视图
134 0
|
SQL 关系型数据库 Perl
通过函数定位DML锁等待
--创建函数,注意此函数只能定位由于dml操作所引起的锁等待,对于ddl引起的锁等待,此sql无法完全定位 CREATE OR REPLACE FUNCTION report_lock...
840 0
|
8月前
|
SQL Oracle 关系型数据库
加索引导致表被锁的原因及处理方法
加索引导致表被锁的原因及处理方法
660 0
|
SQL
关于主外键关系DML父表和DML子表加锁方式
原创 转载请注明出处 当存在主外键关系时候不管是更新主表还是子表都会出现对应的LOCK,解释如下: 实验 SQL> create table test1  2  (id int); SQL> alter table TEST1  2    add con...
872 0
|
SQL
两表连接视图,只查询一个表
要视图中有表连接,查询视图必然引起表连接,但今天才知道创建主键以及外键约束,oracle可以只查询某一张表(如果查询的数据只在这张表中) ---创建实验表RUDY@linux_orcl>c...
695 0
|
SQL Oracle 关系型数据库
应用ROWDEPENDENCIES行级跟踪,查询oracle表中数据行上最后的DML时间
  在Oracle 10g中的引入了ORA_ROWSCN伪列新特性。基于此种伪列所提供的信息,我们可以方便地找出某个数据块或某一个行最近被修改的时间戳。它又分为两种模式:一种是基于block这是默认的模式(块级跟踪,非行依赖性(NOROWDEPENDENCIES));还有一种是基于row上,这种模式只能在建里表时指定ROWDEPENDENCIES(行级跟踪),不可以通过后期的alter  table语句来将表修改为ROWDEPENDENCIES。
1735 0