MySQL 中锁的面试题总结
生活随笔
收集整理的這篇文章主要介紹了
MySQL 中锁的面试题总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是鎖?MySQL 中提供了幾類鎖?
鎖是實現數據庫并發控制的重要手段,可以保證數據庫在多人同時操作時能夠正常運行。MySQL 提供了全局鎖、行級鎖、表級鎖。其中 InnoDB 支持表級鎖和行級鎖,MyISAM 只支持表級鎖。
什么是死鎖?
是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的過程稱為死鎖。
死鎖是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的過程稱為死鎖。
常見的死鎖案例有哪些?
- 將投資的錢拆封幾份借給借款人,這時處理業務邏輯就要把若干個借款人一起鎖住 select * from xxx where id in (xx,xx,xx) for update。
- 批量入庫,存在則更新,不存在則插入。解決方法 insert into tab(xx,xx) on duplicate key update xx='xx'。
如何處理死鎖?
對待死鎖常見的兩種策略:
- 通過 innodblockwait_timeout 來設置超時時間,一直等待直到超時;
- 發起死鎖檢測,發現死鎖之后,主動回滾死鎖中的某一個事務,讓其它事務繼續執行。
如何查看死鎖?
- 使用命令 show engine innodb status 查看最近的一次死鎖。
- InnoDB Lo
總結
以上是生活随笔為你收集整理的MySQL 中锁的面试题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超简单的分布式ID生成方案!美团开源框架
- 下一篇: MySQL中你必须知道的10件事,1.5