我有一個系統目前有著以下的問題
1. 用大量的javascript與Classic ASP來寫, 對於FF user不夠親合
2. javascript與ASP本身的安全性問題
3. 從client端insert into DB時造成過多的lock block
其中#3是我想在本版討論的
我今天試著一個一個把Default constraint, FK constraint都下掉
一樣會有這種情形
當我發現我的PK有指定fillfactor=90時
我試著把他分別指定為0 (直接uncheck不指定)
指定為95及98
然後進行insert into的測試
(從ASP端call sp->執行insert statement)
很奇怪的是他好像只要是奇數筆的資料insert進去就不會有事
偶數筆的時候就會在系統裡造成極高的lock block(大約3600)
我一直強烈懷疑是table schema的問題
但是經過今天的測試我開始懷疑倒底是SQL端的問題還是別的地方
是造成系統bottleneck的原凶
還請各位SQL專家不吝指教, 謝謝
使用系統是SQL server 2000
付上DB schema及sp原始碼
CREATE TABLE [Notetable] (
[NoteID] [bigint] IDENTITY (1, 1) NOT NULL ,
[Sender] [int] NOT NULL ,
[Receiver] [int] NOT NULL ,
[Subject] [nvarchar] (200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[TheContent] [nvarchar] (3000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[NoteType] [tinyint] NOT NULL CONSTRAINT [DF__note_ta__NoteT__6D2D2E85] DEFAULT (0),
[CreateDate] [datetime] NOT NULL CONSTRAINT [DF__note_ta__Creat__6E2152BE] DEFAULT (getdate()),
[IsConfirmed] [tinyint] NOT NULL CONSTRAINT [DF__note_ta__IsCon__6F1576F7] DEFAULT (0),
CONSTRAINT [PK_notetable] PRIMARY KEY CLUSTERED
(
[NoteID]
) WITH FILLFACTOR = 90 ON [PRIMARY] ,
CONSTRAINT [FK_notetable_membertable] FOREIGN KEY
(
[ReceiverID]
) REFERENCES [membertable] (
[charID]
) ON DELETE CASCADE ON UPDATE CASCADE
) ON [PRIMARY]
GO
Create PROCEDURE myproc_SendNotes
@Sender int, @Receiver int, @subject nvarchar(200),
@TheContent nvarchar(3000)
AS
SET NOCOUNT ON
insert into Notetable (Sender, Receiver, Topic,Content)
values (@Sender ,@Receiver,@subject,@TheContent)
IF (@@ERROR <> 0)
return -1
else
RETURN
SET NOCOUNT OFF
--
╭──╮╭──╮╭──╮╭╮╭╮╭──╮╭╮╭╮╭──╮
╰╮╭╯│╭╮││ ─┤│╰╯│╰╮╭╯│╰╯││ ○ │
││ │╰╯│├─ ││╭╮│╭╯╰╮╰╮╭╯│╭╮│
╰╯ ╰──╯╰──╯╰╯╰╯╰──╯ ╰╯ ╰╯╰╯
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 75.85.22.50