国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MySQL中select * for update鎖表的問題

2019-11-09 13:37:33
字體:
來源:轉載
供稿:網友

由于InnoDB預設是Row-Level Lock,所以只有「明確」的指定主鍵,MySQL才會執行Row lock (只鎖住被選取的資料例) ,否則MySQL將會執行Table

Lock (將整個資料表單給鎖住)。 舉個例子: 假設有個表單PRoducts ,里面有id跟name二個欄位,id是主鍵。

例1: (明確指定主鍵,并且有此筆資料,row lock)

SELECT * FROM products WHERE id='3' FOR UPDATE;

SELECT * FROM products WHERE id='3' and type=1 FOR UPDATE;

例2: (明確指定主鍵,若查無此筆資料,無lock)

SELECT * FROM products WHERE id='-1' FOR UPDATE;

例2: (無主鍵,table lock)

SELECT * FROM products WHERE name='Mouse' FOR UPDATE;

例3: (主鍵不明確,table lock)

SELECT * FROM products WHERE id<>'3' FOR UPDATE;

例4: (主鍵不明確,table lock)

SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;注1: FOR UPDATE僅適用于InnoDB,且必須在交易區塊(BEGIN/COMMIT)中才能生效。

注2: 要測試鎖定的狀況,可以利用MySQL的Command Mode ,開二個視窗來做測試。在MySql 5.0中測試確實是這樣的

另外:MyAsim 只支持表級鎖,InnerDB支持行級鎖 添加了(行級鎖/表級鎖)鎖的數據不能被其它事務再鎖定,也不被其它事務修改

(修改、刪除) 。是表級鎖時,不管是否查詢到記錄,都會鎖定表。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 股票| 南部县| 钟祥市| 临沭县| 西平县| 沙河市| 图片| 阿克陶县| 冷水江市| 呼玛县| 菏泽市| 磐安县| 庆元县| 通州区| 泾源县| 隆安县| 武定县| 云梦县| 申扎县| 武宁县| 岳普湖县| 隆回县| 温泉县| 通化县| 长乐市| 息烽县| 都兰县| 克拉玛依市| 天水市| 高碑店市| 砀山县| 卢龙县| 崇左市| 建始县| 崇义县| 田阳县| 陕西省| 康定县| 错那县| 崇阳县| 蒙城县|