我正在使用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]`
答案 0 :(得分:0)
如果有许多进程尝试插入到一个表中,则总是会阻塞。但是,某些设置可用于限制时间。
您使用的隔离级别是多少?默认? http://technet.microsoft.com/en-us/library/ms173763.aspx
您是否可以在此帖中包含以下信息:
1 - 同时运行(插入)的进程数是多少?
2 - 您使用的是哪种类型的磁盘子系统? RAID 5或只是一个简单的磁盘。
3 - 您使用的是哪个版本的SQL Server?
4 - 数据库有哪些增长选项?
5 - 当前数据库有多满?
6 - 是否初始化实例文件?
鉴于上述问题的答案,您可以优化插入过程。