我們有一個系統,客戶在先到先得的基礎上分配產品。針對一個數據庫表上大量請求的最佳解決方案
我們的產品表包含開始於零,我們用它來跟蹤有多少產品已分配即用戶保留一個產品,並得到分配1遞增的主鍵,接下來用戶將獲得2等
問題在於,潛在成千上萬的用戶會在任何給定的小時內訪問系統。所有的人都會打這張桌子。
由於我們需要確保每個客戶只分配一個產品並跟蹤有多少產品已分配,因此我們對每個訪問該系統的客戶使用一個行鎖,以確保他們在下一個客戶之前寫入表中擊中系統 - 即執行先來先服務的規則。
我們關注的是每個請求進入SQL Server 2008企業版和行鎖的處理時間的瓶頸。
因爲我們需要確保primay關鍵的完整性,因此任何需要複製行不通的,我們不能使用多臺服務器。
有誰知道有什麼好的解決方案,在處理上一個數據庫表的請求數量龐大的特別有效的?
多一點信息: 有問題的表基本上只包含兩個字段 - ID和客戶ID。解決方案是免費贈送一百萬件產品 - 因此對高需求的預期以及爲什麼使用增量主鑰匙作爲關鍵對我們有意義 - 一旦關鍵點擊數百萬,則不再有客戶可以註冊。而且,這些產品都是不同的,因此分配正確的密鑰是重要的,例如,前100名顧客進入receieve更高價值的產品比下100等
感謝您的幫助。
能否請您重新標籤,包括[SQLSERVER]你能告訴我的版本及版本,如果您編輯您的問題,並告訴我們你有'SQL2008企業Edition'例如,我們也許能夠提供量身定做的解決方案如表分區可在SQL 2008 EE – 2012-03-28 03:16:18
謝謝Jeremy。增加了額外的信息。 – 2012-03-28 03:22:03
明顯的第一個問題;你是否剝奪了獲得密鑰的事務中的所有其他內容?例如。在嘗試獲得關鍵所需知道的一切之前,你知道嗎?去桌子上拿鑰匙,然後再做其他的事情? – Karl 2012-03-28 03:40:56