在HBase中,爲了提供單行事務支持,它使用行鎖定概念。假設,例如行鎖定HBase單行事務支持
Put p=new Put("/*Row Key*/");
該語句將鎖定該行。
所以,直到我們完成
table.put(P)
鎖不會被釋放。
所以,如果我開始一個新的認沽即
認沽P1 =新的認沽( 「/ 行鍵」)之間;
該p1放不應該工作,因爲該行已被鎖定,但在HBase 0.94時,當我嘗試它的工作。
關於行鎖Link Where i had seen about Row Lock我的理解是否有任何錯誤。如果不是單行事務支持如何處理out行鎖定。
有一個方法** getRowLock()**可以使用Put對象來調用。所以,我認爲在創建對象時只有行被鎖定。你說的話可能是正確的。 Thanx的回覆 – Rohit 2013-02-16 08:35:17
我可以問你正在使用什麼版本的HBase API?我發現這個頁面http://tsunanet.net/~tsuna/asynchbase/api/org/hbase/async/RowLock.html這似乎表明行鎖可以由客戶端生成和保存。我相信作爲我的回答的一個修正,java客戶端將自動從服務器獲取鎖定,但只有在調用table.put()時它纔會獲得鎖定。很難找到有關這些問題的文檔,不是! – fabspro 2013-02-16 09:11:28
爲了澄清,當你創建一個新的Put()對象時,你完全沒有接觸到服務器。但是當你調用table.put(p)時,java客戶端將在內部從服務器獲取鎖,然後寫入數據,然後釋放鎖。希望它有助於:) – fabspro 2013-02-16 09:12:27