并发 SQL 插入正在阻塞到表
Posted
技术标签:
【中文标题】并发 SQL 插入正在阻塞到表【英文标题】:Concurrent SQL Insert Are Blocking to a Table 【发布时间】:2013-09-27 11:54:38 【问题描述】:我正在将 SQL 2005 用于应用程序。就我而言,通过不同的进程生成了许多请求,并将记录插入到一个表中。但是当我通过 sp_who2 活动过程检查数据库中运行的进程时,我发现插入被其他插入语句阻塞并导致进程变慢。有什么方法可以避免并发插入到一张表中的阻塞/死锁。下面是我的表的结构。
`CREATE TABLE [dbo].[Tbl_Meta_JS_Syn_Details](
[ID] [int] IDENTITY(1,1) NOT NULL,
[EID] [int] NULL,
[Syn_Points_ID] [int] NULL,
[Syn_ID] [int] NULL,
[Syn_Word_ID] [int] NULL,
[Created_Date_Time] [datetime] NULL CONSTRAINT [DF_Tbl_JS_Syn_Details_Created_Date_Time] DEFAULT (getdate()),
CONSTRAINT [PK_Tbl_JS_Syn_Details] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]`
【问题讨论】:
@Andomar 您能否解释一下“ID 上的主键可能有帮助”。我已经在ID
列上使用主键
你说得对,我删评论!
如果对您有帮助,请查看以下链接:[在此处输入链接描述][1] [1]:***.com/questions/14913953/…
【参考方案1】:
如果许多进程试图插入一张表,总会出现阻塞。但是,可以使用一些设置来限制时间。
您使用什么隔离级别?默认? http://technet.microsoft.com/en-us/library/ms173763.aspx
您能否在这篇文章中包含以下信息:
1 - 有多少进程同时运行(插入)?
2 - 您使用的是什么类型的磁盘子系统? RAID 5 或只是一个简单的磁盘。
3 - 您使用的是哪个版本的 SQL Server?
4 - 数据库的增长选项是什么?
5 - 当前数据库有多满?
6 - 实例文件初始化是否开启?
鉴于以上问题的答案,您可以优化插入过程。
【讨论】:
以上是关于并发 SQL 插入正在阻塞到表的主要内容,如果未能解决你的问题,请参考以下文章