close


http://www.inspirr.com 

核心提示:版本,其中可以一個寫操作,同時有許多讀取操作。這明數據庫或表支持數據依賴的不同視圖,取決于訪問何時開始。其它共同的術語是“時間跟蹤”、“寫復制”或者“按需復制”。

不同于行級或頁級鎖定的選項:

· 版本,其中可以一個寫操作,同時有許多讀取操作。這明數據庫或表支持數據依賴的不同視圖,取決于訪問何時開始。其它共同的術語是“時間跟蹤”、“寫復制”或者“按需復制”。

· 按需復制在許多情況下優先于頁級或行級鎖定。然而,在最壞的情況下,它可能比使用常規鎖定使用多的內存。

· 除了行級鎖定外,你可以使用應用程序級鎖定,例如在MySQL中使用GET_LOCK和RELEASE_LOCK。這些是建議性鎖定,它們只能在運行良好的應用程序中工作。

為達到最高鎖定速度,除InnoDB 和BDB 之外,對所有存儲引擎,MySQL使用表鎖定。對于InnoDB 和BDB 表,如果你用LOCK TABLES顯式鎖定表,MySQL只使用表鎖定;如果你不使用LOCK TABLES,因為 InnoDB 使用自動行級鎖定而BDB 使用頁級鎖定來保證事務隔離。

但是對于大表,對于大多數應用程序,表鎖定比行鎖定更好,但存在部分缺陷。表鎖定使許多線程同時從一個表中進行讀取操作,但如果一個線程想要對表進行寫操作,它必須首先獲得獨占訪問。更新期間,所有其它想要訪問該表的線程必須等待直到更新完成。

表更新通常情況認為比表檢索更重要,因此給予它們更高的優先級。這應確保更新一個表的活動不能“餓死”,即使該表上有很繁重的SELECT 活動。

表鎖定在這種情況下會造成問題,例如當線程正等待,因為硬盤已滿并且在線程可以處理之前必須有空閑空間。在這種情況下,所有想要訪問出現問題的表的線程也被設置成等待狀態,直到有更多的硬盤空間可用。

表鎖定在下面的情況下也存在問題:

· 一個客戶發出長時間運行的查詢。

· 然后,另一個客戶對同一個表進行更新。該客戶必須等待直到SELECT完成。

· 另一個客戶對同一個表上發出了另一個 SELECT 語句。因為UPDATE比 SELECT 優先級高,該SELECT 語句等待UPDATE完成,并且等待第1個 SELECT 完成。

 

  Tag: 設計公司 | 網頁設計公司 | 廣告公司 | 網站設計 | 平面設計 | 互動媒體 | 網頁設計 | Web design | Website design | design house | 媒體公司 | Iphone app | 程式設計 | Flash 網頁 | Flash game | 動畫設計 | 後期製作 | 網上商店 | 網上宣傳 | 網頁服務 | 

arrow
arrow
    全站熱搜

    inspirr 發表在 痞客邦 留言(0) 人氣()