一个设备采集数据监控系统,sql server 数据库针对每个设备创建一个数据库,每个数据库有多个数据表,每个数据表有对应的插入数据存储过程。存储过程的内容就是查询当前插入的数据是否已经存在,如果不重复就进行插入。
创建40个设备,在测试程序中创建40个线程,每个线程负责调用对应设备的存储过程插入数据。当40个线程同时运行,会出现有些存储过程出现超时过期的情况。线程超时时间设置为60秒。
每个线程针对的是不同的数据库,而且存储过程功能也比较简单,应该不是锁的问题。比较可能是io问题。请问有没有什么方法可以确定超时的原因,还有需要怎样去解决。
...全文
41211打赏收藏
多线程插入sql server数据库导致超时过期
一个设备采集数据监控系统,sql server 数据库针对每个设备创建一个数据库,每个数据库有多个数据表,每个数据表有对应的插入数据存储过程。存储过程的内容就是查询当前插入的数据是否已经存在,如果不重复就进行插入。 创建40个设备,在测试程序中创建40个线程,每个线程负责调用对应设备的存储过程插入数据。当40个线程同时运行,会出现有些存储过程出现超时过期的情况。线程超时时间设置为60秒。 每个线程针对的是不同的数据库,而且存储过程功能也比较简单,应该不是锁的问题。比较可能是io问题。请问有没有什
SELECT TOP 5 * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC --现在执行
SELECT TOP 5 * FROM sys.dm_os_waiting_tasks WHERE blocking_session_id IS NOT NULL --超时时执行