并发SQL插入正在阻止表

时间:2013-09-27 11:54:38

标签: sql sql-server block deadlock

我正在使用SQL 2005作为应用程序。在我的例子中,通过不同的进程生成请求数并将Record插入一个表。但是当我通过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]`

1 个答案:

答案 0 :(得分:0)

如果有许多进程尝试插入到一个表中,则总是会阻塞。但是,某些设置可用于限制时间。

您使用的隔离级别是多少?默认? http://technet.microsoft.com/en-us/library/ms173763.aspx

您是否可以在此帖中包含以下信息:

1 - 同时运行(插入)的进程数是多少?

2 - 您使用的是哪种类型的磁盘子系统? RAID 5或只是一个简单的磁盘。

3 - 您使用的是哪个版本的SQL Server?

4 - 数据库有哪些增长选项?

5 - 当前数据库有多满?

6 - 是否初始化实例文件?

鉴于上述问题的答案,您可以优化插入过程。