久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySql類型轉換導致行鎖升級為表鎖的示例

143次閱讀
沒有評論

共計 962 個字符,預計需要花費 3 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下 MySql 類型轉換導致行鎖升級為表鎖的示例,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

在 MySql 的寫語句中,給表列賦值與表類型不符合時,MySql 底層的優化器發揮作用,會做一個強制類型轉化,此時能正常操作,但會導致行鎖升級為表鎖。示例如下

以 student 表為例,表字段類型:
MySql 類型轉換導致行鎖升級為表鎖的示例 表內容如下:
MySql 類型轉換導致行鎖升級為表鎖的示例

打開兩個 session 會話窗口,并把兩個會話窗口中的 MySql 的自動提交模式改為手動提交

set autocommit=false;

MySql 類型轉換導致行鎖升級為表鎖的示例 在會話窗口 1 中執行更新語句,但不提交事務。age 列在建表時指定的是 int 類型,此地更新語句中用字符串’100’進行賦值,在 MySql 的優化器中會自動把字符串’100’強制轉化為整形 100,然后再執行 SQL 檢索。

update student set  >

然后再會話窗口 2 中對另外沒關系的數據執行更新操作

 update student set age=28 where name= lzj

正常情況下,兩條 SQL 語句操作的行數據不同,執行起來會互不影響,但實際會話 1 中的更新操作阻塞了會話 2 中的更新操作
MySql 類型轉換導致行鎖升級為表鎖的示例 會話 1 中執行了更新操作,但沒有執行事務提交,事務的隔離級別為 Read Committed,所以在會話 2 中還看不到會話 1 中更新后的結果。但在回話 2 中執行對其它行數據更新操作時,出現了阻塞。可見會話 1 中的 SQL 語句的賦值出現了強轉,導致會話 1 由行鎖升級為表鎖,鎖住了整個 student 表,因而會話 2 中的 SQL 阻塞。下面對會話 1 中的更新操作執行事務提交,那么會話 2 中的更新操作就會繼續執行了
MySql 類型轉換導致行鎖升級為表鎖的示例 對會話 1 中的更新操作執行 commit 手動提交事務后,會話 1 釋放掉 student 的表鎖,會話 2 中的更新操作可以繼續執行。
最后對會話 2 中的更新也執行 commit 事務提交,兩條 SQL 都更新完畢,student 表內容如下:
MySql 類型轉換導致行鎖升級為表鎖的示例

從上述案例觀知,SQL 語句賦值與表列類型不匹配時,MySql 的優化器強制轉化為匹配的類型,導致行鎖升級為表鎖。所以開發中一定要注意類型的匹配,避免行鎖升級為表鎖,影響并發性能。

看完了這篇文章,相信你對“MySql 類型轉換導致行鎖升級為表鎖的示例”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計962字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 广灵县| 焉耆| 福鼎市| 池州市| 清河县| 大连市| 突泉县| 惠安县| 吉首市| 文昌市| 天柱县| 定兴县| 巩留县| 涿鹿县| 神池县| 荔浦县| 梓潼县| 白沙| 宁武县| 师宗县| 衡南县| 柘城县| 象州县| 安庆市| 新民市| 阿鲁科尔沁旗| 佛冈县| 会昌县| 长白| 荆州市| 永昌县| 铅山县| 铁岭市| 中方县| 和政县| 历史| 茌平县| 江达县| 铁岭市| 宜春市| 曲水县|