藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 數 據 庫


    

藍森林 http://www.lslnet.com 2006年8月26日 15:18


請高手救命 ,MYSQL怎麼實現行記錄鎖定?????

,MYSQL怎麼實現行記錄鎖定!

我在BEGIN;SELECT * FOR UPDATE 的時候只會鎖定整個表不能實現行記錄的鎖定,但是ORACLE可以在游標裡FOR UPDATE 就可以鎖定行記錄了!

請高手出來幫個忙

請高手救命 ,MYSQL怎麼實現行記錄鎖定?????

InnoDB 中的隔離級詳細描述:

READ UNCOMMITTED 這通常稱為 'dirty read':non-locking SELECTs 的執行使我們不會看到一個記錄的可能更早的版本;因而在這個隔離度下是非 'consistent' reads;另外,這級隔離的運作如同 READ COMMITTED。
READ COMMITTED 有些類似 Oracle 的隔離級。所有 SELECT ... FOR UPDATE 和 SELECT ... LOCK IN SHARE MODE 語句只鎖定索引記錄,而不鎖定之前的間隙,因而允許在鎖定的記錄後自由地插入新記錄。以一個唯一地搜索條件使用一個唯一索引(unique index)的 UPDATE 和 DELETE,僅僅只鎖定所找到的索引記錄,而不鎖定該索引之前的間隙。但是在範圍型的 UPDATE and DELETE 中,InnoDB 必須設置 next-key 或 gap locks 來阻塞其它用戶對範圍內的空隙插入。 自從為了 MySQL 進行複製(replication)與恢復(recovery)工作'phantom rows'必須被阻塞以來,這就是必須的了。Consistent reads 運作方式與 Oracle 有點類似: 每一個 consistent read,甚至是同一個事務中的,均設置並作用它自己的最新快照。
REPEATABLE READ 這是 InnoDB 默認的事務隔離級。. SELECT ... FOR UPDATE, SELECT ... LOCK IN SHARE MODE, UPDATE, 和 DELETE ,這些以唯一條件搜索唯一索引的,只鎖定所找到的索引記錄,而不鎖定該索引之前的間隙。 否則這些操作將使用 next-key 鎖定,以 next-key 和 gap locks 鎖定找到的索引範圍,並阻塞其它用戶的新建插入。在 consistent reads 中,與前一個隔離級相比這是一個重要的差別: 在這一級中,同一事務中所有的 consistent reads 均讀取第一次讀取時已確定的快照。這個約定就意味著如果在同一事務中發出幾個無格式(plain)的 SELECTs ,這些 SELECTs 的相互關係是一致的。
SERIALIZABLE 這一級與上一級相似,只是無格式(plain)的 SELECTs 被隱含地轉換為 SELECT ... LOCK IN SHARE MODE。
 

請高手救命 ,MYSQL怎麼實現行記錄鎖定?????

謝謝了,但是,能不能給個直接一點的辦法啊?

因為對MYSQL第一次接觸,所以看的不是很懂
上面的意識是不是對它加個consistent read 就能實現對一定條件搜索數據的鎖定,是麼?

請高手救命 ,MYSQL怎麼實現行記錄鎖定?????

好像不行哦!!!!還是鎖住了整個表,不能對SELECT不到其他的數據進行UPDATE!

悲慘,搞不頂啊!

沒試過行鎖,以後有空試試



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com