猿问

数据库不能使用并行插入操作插入行?

不能使用并行插入操作插入行
 
公司erp导入数据客户端软件,在解析完报表数据后,为了提高数据入库效率,程序参用线程池进行并发插入操作插入记录,数据入库时程序会出现未响应,cpu占用为0问题分析:

 
业务逻辑:开了10个线程,执行select查询是否存在记录,不存在就执行insert插入记录。
问题分析:查询msdn,"INSERT 语句总是在其修改的表上获取排他 (X) 锁并在事务完成之前持有该锁。 使用排他锁时,任何其他事务都无法修改数据;仅在使用 NOLOCK 提示或未提交读隔离级别时才会进行读取操作。"
当线程a执行insert操作时,获取排他锁,其实操作系统切换线程给线程b,线程b首先请求获取排他锁,此时就符合发生死锁的条件:循环等待条件(Circular wait):系统中若干进程组成环路,改环路中每个进程都在等待相邻进程正占用的资源。
 
不知道分析的对不?
交互式爱情
浏览 416回答 4
4回答

jeck猫

Thread.Sleep(5);//触发操作系统立刻重新进行一次CPU竞争
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答