多线程插入sql server数据库导致超时过期

imlmy 2014-05-15 05:28:26
一个设备采集数据监控系统,sql server 数据库针对每个设备创建一个数据库,每个数据库有多个数据表,每个数据表有对应的插入数据存储过程。存储过程的内容就是查询当前插入的数据是否已经存在,如果不重复就进行插入。
创建40个设备,在测试程序中创建40个线程,每个线程负责调用对应设备的存储过程插入数据。当40个线程同时运行,会出现有些存储过程出现超时过期的情况。线程超时时间设置为60秒。
每个线程针对的是不同的数据库,而且存储过程功能也比较简单,应该不是锁的问题。比较可能是io问题。请问有没有什么方法可以确定超时的原因,还有需要怎样去解决。
...全文
412 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-05-21
  • 打赏
  • 举报
回复
SELECT TOP 5 * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC 截图看看,不仅仅只要第一条
imlmy 2014-05-21
  • 打赏
  • 举报
回复
引用 7 楼 luckyrandom 的回复:
对于正常的设计,每秒插入一千多条记录(一千多个独立小事务)是没问题的 谁知道你的存储过程做了什么动作,消耗了什么资源呢 若需要DBA支持,欢迎联系我
存储过程里面就是先查询要插入的数据是否已经存在,根据主键(时间字段)来查的。如果不存在就直接执行一条插入语句。
imlmy 2014-05-21
  • 打赏
  • 举报
回复
引用 6 楼 sz_haitao 的回复:
具体现象? 从一个线程开始,逐渐增加线程数,会怎样?
也一样。就是线程数达到一定程度,多个线程同时在执行存储过程进行数据插入,就会出现执行超时情况
imlmy 2014-05-21
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
writelog和大量使用存储过程没直接的关系,你是不是没有做常规日志备份啊?
常规日志备份是指什么意思?日志模式我是设置为simple
Q315054403 2014-05-20
  • 打赏
  • 举报
回复
对于正常的设计,每秒插入一千多条记录(一千多个独立小事务)是没问题的 谁知道你的存储过程做了什么动作,消耗了什么资源呢 若需要DBA支持,欢迎联系我
haitao 2014-05-20
  • 打赏
  • 举报
回复
具体现象? 从一个线程开始,逐渐增加线程数,会怎样?
發糞塗牆 2014-05-20
  • 打赏
  • 举报
回复
writelog和大量使用存储过程没直接的关系,你是不是没有做常规日志备份啊?
imlmy 2014-05-20
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
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 --超时时执行
dm_os_wait_stats第一个查询结果是writelog,这个应该是由于我用了大量的存储过程。 dm_os_waiting_tasks没有返回结果。
發糞塗牆 2014-05-15
  • 打赏
  • 举报
回复
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 --超时时执行
imlmy 2014-05-15
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
sql 版本多少的
2008
發糞塗牆 2014-05-15
  • 打赏
  • 举报
回复
sql 版本多少的

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧