我正在開發類似系統的工作流程。我有一個任務表和狀態字段。狀態值可以是New,ready,processing,error,abort,done之一。設計表以支持使用sql server更快速地更新一個字段的最佳實踐
我有7個程序會根據不同的情況觸發來改變任務狀態的值。大多數時間每個進程將在自己的數據集上工作,每次只處理多達5000條記錄。但是如果數據達到約200萬條記錄,我仍然會看到一些僵局。我用SQL Profiler檢查,看起來像一些頁面資源相關。我不擅長sql server的性能調優,也不太瞭解它。
由於不活動任務將每天歸檔,因此我正在考慮重新設計表格以支持大約1000萬條記錄。
很少的選擇可能是:
- 創建基於狀態分解表。
- 創建靜態數據,並支持表主表基於狀態
是否有這種情況的任何好的做法?
謝謝!
謝謝Siva,我們使用的是SQL Server 2005 +。並將按照您的建議應用隔離。但我們並不要求客戶端必須具有Enterprise SQL Server。因此,分區可能是一些可以支付更多費用的客戶的選擇。 –
任務表是否定義了聚集索引? – gonsalu
是的。 TaskId是主鍵和int類型。我試圖讓它成爲非羣集。但表現更糟糕。 –