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

歡迎光臨散文網(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釋放表鎖。正確的方式見如下語句:


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

分享到微博請遵守國家法律
玉田县| 古丈县| 廉江市| 土默特右旗| 策勒县| 淮南市| 金湖县| 吉林市| 体育| 汤阴县| 稷山县| 桃江县| 灵璧县| 南投县| 桓台县| 山西省| 泾源县| 嘉荫县| 申扎县| 镇沅| 罗田县| 凤翔县| 吉木乃县| 洛隆县| 伊金霍洛旗| 麦盖提县| 汨罗市| 永登县| 黑龙江省| 会东县| 金坛市| 游戏| 和田市| 运城市| 龙口市| 叙永县| 谢通门县| 瑞丽市| 和龙市| 东乡县| 白朗县|