數據庫並發場景有三種,分別為:
1、讀讀:不存在任何問題,也不需要並發控制
2、讀寫:有線程安全問題,可能會造成事務隔離性問題,可能遇到臟讀、幻讀、不可重復讀
3、寫寫:有線程安全問題,可能存在更新丟失問題
MVCC是一種用來解決讀寫沖突的無鎖並發控制,也就是為事務分配單項增長的時間戳,為每個修改保存一個版本,版本與事務時間戳關聯,讀操作只讀該事務開始前的數據庫的快照,所以MVCC可以為數據庫解決一下問題:
1、在並發讀寫數據庫時,可以做到在讀操作時不用阻塞寫操作,寫操作也不用阻塞讀操作,提高了數據庫並發讀寫的性能
2、解決臟讀、幻讀、不可重復讀等事務隔離問題,但是不能解決更新丟失問題