2012-11-21 126 views
2

Adaptive Server提供了以下鎖定方案:的Sybase鎖定策略

  • 所有頁鎖定,用於鎖定數據頁和索引頁
  • 數據頁鎖定,僅鎖定數據頁
  • 行鎖定,僅鎖定數據行

我的問題是,如果鎖的數量取決於鎖定策略。有人說很多鎖定是應用程序執行不當或類似的跡象。我的意思是數據行戰略將需要比示例數據頁更多的鎖,因爲數據頁覆蓋了一個鎖下的許多行。我不完全確定我的假設。

我目前有200k,這還不夠。

最近更改了我的表上的鎖定策略,以改善性能,然後我一直在增加鎖。

Sybase文檔說範圍在1000-2147483647之間。

爲什麼不把它設置爲2147483647?

+0

這是[標籤: sybase-asa]或[tag:sybase-ase]? –

回答

0

鎖使用內存,因此設置爲最大值可能導致您的ASE實例耗盡可用內存。 SAP Sybase有一些performance and tuning documentation可幫助您找出如何更好地調整應用程序和服務器。

1

當有許多進程訪問數據庫時,數據頁和數據鎖的鎖定效果會更好,因爲有很多WRITE/UPDATE操作需要進行獨佔鎖定。在All-Pages鎖定的情況下,更多的頁面被一個操作鎖定(多於受寫入操作影響的頁面),因此可以阻止要訪問不受寫入操作影響的數據。

但是,如果該表具有數據頁或數據行鎖定,相同的寫入過程將只鎖定受影響的數據,從而鎖定較少量的數據,因此提供更好的併發性。但是這個寫程序持有的鎖的數量更多,因此需要更多的內存。

舉例來說,一個頁面有10行,寫入過程會影響5行。如果進程鎖定頁面,它只需要一個鎖並阻止任何想要讀取其餘五行的進程。

如果表中有數據行鎖定,那麼筆者過程將需要五把鎖(這意味着更多的內存)和葉的頁面上五排,其餘爲任何其他進程進行讀/寫