mysql 特徵和隔離級別概念

事物特性

  1. 原子性(Atomicity)
    原子性是指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。
  2. 一致性(Consistency)
    事務必須使數據庫從一個一致性狀態變換到另外一個一致性狀態
  3. 隔離性(Isolation)
    事務的隔離性是指一個事務的執行不能被其他事務干擾,
    即一個事務內部的操作及使用的數據對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
  4. 持久性(Durability)
    持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,接下來的其他操作和數據庫故障不應該對其有任何影響

事物的隔離級不同會出現如下問題
髒讀: 對於兩個事務 T1, T2, T1 讀取了已經被 T2 更新但還沒有被提交的字段.
之後, 若 T2 回滾, T1讀取的內容就是臨時且無效的.
不可重複讀: 對於兩個事務T1, T2, T1 讀取了一個字段, 然後 T2 更新了該字段.
之後, T1再次讀取同一個字段, 值就不同了.
幻讀: 對於兩個事務T1, T2, T1 從一個表中讀取了一個字段, 然後 T2 在該表中
了一些新的行. 之後, 如果 T1 再次讀取同一個表, 就會多出幾行

一個事務與其他事務隔離的程度稱爲隔離級別. 數據庫規定了多種事務隔
離級別, 不同隔離級別對應不同的干擾程度, 隔離級別越高, 數據一致性就
越好, 但併發性越弱

事物的隔離級別
在這裏插入圖片描述

  • 每啓動一個mysql程序,就會獲得一個單獨的數據庫連接,每個數據庫連接都有一個全局變量@@tx_isolation,表示當前事物的隔離級別;
  • 查看當前事物的隔離級別:select @@tx_isolation;
  • 設置當前當前mysql連接的隔離級別:set transaction isolation level read committed;
  • 設置數據庫系統的全局隔離級別:set global transaction isolation level read committed;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章