iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Modern Web

MySQL,我的超人系列 第 13

Day13-MySQL的併發(Concurrency)-髒讀、更新丟失、幻讀、不可重複讀

  • 分享至 

  • xImage
  •  

簡介

前幾篇文章都是以只有一位使用者的角度去操作資料庫,基本不會有併發的問題,除非那位使用者無聊到開了多台電腦連線到伺服器,那就另當別論了,回到正題,現實情況不太可能只有一位使用者去存取資料庫,通常系統會區分權限,舉例來說,一個電商網站可以照權限區分成一個管理者、多個管理員、許多個會員,如果有兩個以上的會員同時存取同筆資料,就可能發生併發,以下會簡介四個併發問題,以及為了解決併發所提出的四個隔離層級。

併發(Concurrency)

併發問題

1.髒讀Dirty Reads
2.更新丟失Lost Updates
3.幻讀Phantom Reads
4.不可重複讀Non-repeating Reads

四個隔離層級

1.可讀取未提交Read Uncommitted
2.只可讀取已提交Read Committed
3.可重複讀取Repeatable Read
4.序列化Serializable

隔離層級能夠解決的併發問題

https://ithelp.ithome.com.tw/upload/images/20220927/20144865cke8jlJz4l.jpg

閒聊

併發牽扯的知識點較多,所以會分成多篇文章來寫,原則上還是希望能搭配圖片、簡單的demo來寫,不然就跟教科書沒兩樣了,題外話,以前自己研究作業系統時,總以為像是死鎖這類的問題只會出現在面試跟課本裡面,後來跟一位有多年工作經驗的工程師閒聊時,才發現這些問題,在秒殺活動的電商網站中是經常碰到的,一個書到用時方恨少的概念?

預告

Day14-MySQL的併發(Concurrency)-髒讀、更新丟失、幻讀、不可重複讀(2)


上一篇
Day12-MySQL的交易(Transactions)
下一篇
Day14-MySQL的併發(Concurrency)-髒讀Dirty Reads、排他鎖、共享鎖
系列文
MySQL,我的超人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言