看板 Database 關於我們 聯絡資訊
我有一個系統目前有著以下的問題 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