7 mysql事務與隔離級別

鏈接管理器:mysql

接受請求sql

建立線程數據庫

認證用戶緩存

創建安全鏈接安全


解析器生成解析樹服務器


緩存:有些狀況並不適合緩存併發

1)不肯定的結果,select current_time();ide

2)數據較小,緩存後佔據緩存槽性能

3)數據較大,不宜緩存spa


併發控制:兩個以上的用戶同時讀寫同一個文件,都會涉及併發控制問題。

    10分鐘:

    多版本併發控制: MVCC,不一樣用戶建立不一樣的數據快照,根據操做的時間進行合併。


鎖,最簡單的控制機制

    讀鎖:共享鎖

    寫鎖:獨佔鎖

    LOCK TABLES tb_name {READ|WRITE};

    UNLOCK TABLES


鎖粒度:從大到小,MySQL服務器僅支持表級鎖,行鎖須要由存儲引擎完成;

    表鎖:鎖定整張表

    頁鎖:鎖定datablock

    行鎖:鎖定某行


事務

    多項操做做爲一個操做單元對待,都完成或者都不完成

    RDBMS: 支持事物的RDBMS要知足ACID 

1)原子性,Automicity,事務所引發的數據庫操做,要麼都完成,要麼都不執行;

2)一致性,Consistency,

3)隔離性,Isolation,事務調度:事務之間影響最小;MVCC:multi version  control多版本併發控制

4)持久性,Durability,一旦事務成功完成,系統必須保證任何故障都不會引發事務表示出不一致性;

    a)事務提交以前就已經寫出數據至持久性存儲;

    b)結合事務日誌完成;

        事務日誌:順序IO,存儲到連續的磁盤塊,IO操做少,速度快

        數據文件:隨機IO,存儲到不連續磁盤塊,IO操做多,速度慢


事物的完成,先寫入事物日誌,而後才操做數據文件。事物提交了即完成。


事物日誌:

1)重作日誌,redo log,可執行n次

2)撤銷日誌,undo log,

日誌組:含兩個日誌文件,兩個日誌文件輪流寫入,但文件不適宜很大,合適的大小能保證及時將數據寫入磁盤;

數據和日誌不能放在同一塊物理磁盤上,防止一損俱損


隔離性,隔離級別(級別從低到高,級別越高,併發性能越差)

    READ UNCOMMITTED:讀未提交,讀還沒有提交的數據,干擾最大

    READ COMMITTED:讀提交,讀已經提交的數據

    REPATABLE READ:可重讀,一直到事物commit前保持本身的首次狀態,mysql默認

    SERIALIZABLE:可串行

查看默認隔離級別

mysql> show global variables like '%isolation';

+---------------+-----------------+

| Variable_name | Value           |

+---------------+-----------------+

| tx_isolation  | REPEATABLE-READ |

+---------------+-----------------+


服務器變量

1)重啓mysql後失效,reload不失效

全局變量,修改後不影響當前會話,只對新建的會話有效;

會話變量,僅對當前會話有效,並且是當即生效;


2)永久有效:修改配置文件


修改:SET {SESSION|GLOBAL} VAR_NAME=‘’;

mysql> set global tx_isolation='read-uncommitted';


事物的執行

start transaction,啓動

rollback,提交前可回滾

commit,提交後不可回滾


自動提交autocommit

mysql> select @@autocommit;

+--------------+

| @@autocommit |

+--------------+

|            1 |

+--------------+


若是沒有明確啓動事務:

autocommit:能實現自動提交,每個操做都直接提交;

建議:明確使用事務,而且關閉自動提交;在my.cnf [mysqld]中加入autocommit = 0重啓mysqld

做爲調優的一部分,較少IO操做


事物的狀態

    活動的:active

    部分提交:最後一條語句處於將數據寫入磁盤的過程當中

    失敗的:正常提交後,未能完成

    停止的:部分執行完成

    提交的:

提交後沒法撤消。


事務:併發執行

1)提升吞吐量和資源利用率

2)減小等待時間


事務調度:

1)可恢復調度,任何兩個事物的交叉執行,不會致使另外的事物狀態改變;但並不表明回滾時沒有任何影響

2)無級聯高度


併發控制依賴的技術手段:

    鎖,讀鎖,寫鎖

    時間戳,記錄事物的啓動時間和執行時間

    多版本和快照隔離


鎖飢餓,一直獲取不到鎖

死鎖,一直持有鎖


保存點:SAVEPOINT savepoint_id

回滾至保存點以前:ROLLBACK TO savepoint_id 



來自爲知筆記(Wiz)

相關文章
相關標籤/搜索