最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

軟件測試 | 什么時候使用表鎖

2023-08-04 18:00 作者:愛測軟件測試  | 我要投稿

對于InnoDB表,在絕大部分情況下都應(yīng)該使用行級鎖,因為事務(wù)和行鎖往往是我們之所以選擇的InnoDB表的理由。但在個別特殊事務(wù)中,也可以考慮使用表級鎖。

第一種情況是:事務(wù)需要更新大部分或全部數(shù)據(jù),表又比較大,如果使用默認(rèn)的行鎖,不僅這個事務(wù)執(zhí)行效率低,而且可能造成其他事務(wù)長時間鎖等待和鎖沖突,這種情況下可以考慮使用表鎖來提高該事務(wù)的執(zhí)行速度。

第二種情況是:事務(wù)涉及多個表,比較復(fù)雜,很可能引起死鎖,造成大量事務(wù)回滾。這種情況也可以考慮一次性鎖定事務(wù)涉及的表,從而避免死鎖、減少數(shù)據(jù)庫因因事務(wù)回滾帶來的開銷。

當(dāng)然,應(yīng)用中這兩種事務(wù)不能太多,否則,就應(yīng)該考慮使用MyISAM表了。

在InnoDB下,使用表鎖要注意以下兩點。

(1)使用LOCK TABLES雖然可以給InnoDB加表級鎖,但必須說明的是,表鎖不是由InnoDB存取引擎層管理的,而是由其上一層——MySQL Server負(fù)責(zé)的,僅當(dāng)autocommint=0、innodb_table_locks=1(默認(rèn)設(shè)置)時,InnoDB層才能知道MySQL加的表鎖,MySQL Server也才能感知到InnoDB加的行鎖,這種情況下,InnoDB才能自動識別涉及表級鎖的死鎖;否則,InnoDB將無法自動檢測并處理這種死鎖。

(2)在用LOCK TABLES對InnoDB表加鎖時要注意,要將AUTOCOMMIT設(shè)為0,否則MySQL不會給表加鎖;事務(wù)結(jié)束前,不要用UNLOCK TABLES釋放表鎖,因為UNLOCK TABALES會隱含地提交事務(wù);COMMIT或ROLLBACK并不能釋放用LOCK TABLES加的表級鎖,必須用UNLOCK TABLES釋放表鎖。正確的方式見如下語句:


軟件測試 | 什么時候使用表鎖的評論 (共 條)

分享到微博請遵守國家法律
尚志市| 莫力| 平邑县| 定兴县| 丘北县| 甘谷县| 永清县| 庆云县| 潢川县| 鄂托克旗| 苗栗市| 海城市| 花垣县| 祁阳县| 青神县| 庄浪县| 错那县| 怀仁县| 伊春市| 西乌珠穆沁旗| 泰兴市| 墨竹工卡县| 嵩明县| 正阳县| 门源| 阳江市| 拉萨市| 榆中县| 怀集县| 交城县| 平南县| 当涂县| 佛坪县| 瑞金市| 陇南市| 武汉市| 湘潭市| 葫芦岛市| 庆安县| 商南县| 天台县|