2 wq vincent wq_vincent 于 2016.09.07 19:36 提问

关于SQL 表锁死问题~~~~~~

INSERT INTO ..SELECT * FROM 表1;
这样的写法,会导致在操作期间表1被锁死,如果要插入大量数据,那么其他进程就不能访问词表,我相问一下,碰到这个问题有什么好的解决思路呢?多谢
控制插入条件,这个就别建议了。这是回避而非解决。

1个回答

cs133wohao
cs133wohao   2016.09.28 17:29

select with no lock

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SqlServer表死锁的解决方法(转)
SqlServer表死锁的解决方法 前些天写一个存储过程,存储过程中使用了事务,后来我把一些代码注释掉来进行调试找错,突然发现一张表被锁住了,原来是创建事务的代码忘记注释掉。本文表锁住了的解决方法。 其实不光是上面描述的情况会锁住表,还有很多种场景会使表放生死锁,解锁其实很简单,下面用一个示例来讲解: 1 首先创建一个测试用的表: CREATE TABLE Test ( TID
在表中有大量数据时,修改了表结构或者索引造成表锁死时的解决办法
在数据库命令行中查询 select * from information_schema.processlist where command not in ('Sleep') and user not in ('mydba','event_scheduler','repl','binlogbak','system user')找到你当时执行的语句的进程id kill id;
PL/SQL 出现死锁解决办法
在PL/SQL中操作数据表时,长时间没反应,并且编辑某个表中数据时,出现“record is locked by another user”等情况,即出现了死锁。 下面,简述解决办法: step1.PL/SQL查看锁: select t2.username, t2.sid, t2.serial#,t2.logon_time  from v$locked_object t1,v$sessio
锁表原因及解决思路
1、锁表发生在insert  update 、delete 中    2、锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户  3、锁表的原因    第一、 A程序执行了对 tableA 的 insert ,并还未 commite时,B程序也对tableA 进行insert 则此时会发生资源正忙的异常 就是锁表
如何快速发现和处理sqlserver数据库的死锁
首先在sqlserver的查询分析器中查看特定数据库被阻塞的进程 select * from sysprocesses where dbid in (select dbid from sysdatabases where name='www_rztong_com_cn') and blocked>0  然后查看阻塞超时设置 SELECT @@LOCK_TIMEOUT 再次根
执行事务时,如果顺序不一样,会导致sql锁死
如何使用跟踪标记 1204 -- ===================================================== -- 如何使用跟踪标记 1204 --  -- 邹建 2005.08(引用请保留此信息) -- ===================================================== -- ==============
数据库常见死锁原因及处理
数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严重影响应用的正常执行。   在数据库中
sql防止查询锁表
sql后面加with ur的作用可以避免在查询数据库的时候锁死数据库。 DB2中,共有四种隔离级:RS,RR,CS,UR UR:UR-Uncommitted Read 未提交读,是sql执行时的一种隔离级别,允许脏读,不加行锁,作用是在select的时候,不需要对update的数据进行等待 具体with后面加哪个的问题解释如下: 1、ur(Uncommited Read)        就
数据库表被锁住如何处理
//查出哪个进程在锁 SELECT  s.sid, s.serial#  FROM gv$locked_object l, dba_objects o, gv$session s  WHERE l.object_id = o.object_id  AND l.session_id = s.sid;  //杀掉锁住的进程 ALTER system kill session 
关于Oracle表被锁死解决办法
前几天要清空表格,表内大概有几十万条数据,我误用delete,结果=-=,强调:数据量大一定要用truncate table!!!,顺便附上delete和truncate区别: 1、在功能上,truncate是清空一个表的内容,它相当于delete from table_name。 2、delete是dml操作,truncate是ddl操作;因此,用delete删除整个表的数据时,会产生大量的