2010-08-01 36 views

回答

2

就是它的描述在這裏是如何計算應用程序所需的鎖對象的數量,雖然默認的鎖定對象的配置(1000)通常是不夠的。它描述了給定單個數據訪問操作將需要多少個鎖對象,以便您可以乘以併發數據訪問操作的次數並適當地配置鎖對象的數量。這並不是真的在談論鎖爭論。

對於HASH訪問方法,給定的鍵值直接映射到散列桶。只有一個頁面需要查看(並鎖定)才能訪問數據。這與Btree(需要遍歷內部索引節點以獲取數據)和Queue(需要鎖定每條記錄和記錄所在的頁面)不同。

在最近的版本中,我們實際上已經消除了不希望某些鎖,以便把一個簡單的方法將是:

每個數據庫操作將需要

  • 一把鎖對象的頁(B樹,哈希和Recno)正被訪問或記錄(隊列),
  • 加上一個用於元數據頁鎖定對象,
  • 加一鎖定對象如果 B樹PA如果正在使用隊列

基本上,每個數據訪問典型地2-3鎖定對象GE分裂是必需的,每

  • 加一個鎖定對象。事務在事務完成之前累積鎖對象,因此如果應用程序中的事務通常訪問10條記錄,則該事務將需要20-30個鎖對象。如果您的應用程序中可以有多達10個併發線程,那麼您需要將系統配置爲擁有大約300個鎖定對象。配置比你需要的更好,這樣你就不會耗盡,並且過度分配鎖對象的內存開銷很小(它們是小結構)。

    我希望有幫助。

    Dave