MySQL事務

MySQL事務:

事務:一組原子性的SQL查詢,或者說一個獨立工作單元。

    事務日誌:

ACID測試:
    A:atomicity,原子性;整個事務中的所有操作要麼全部成功執行,要麼全部失敗後回滾;
    C:consistency, 一致性;數據庫總是從一個一致性狀態轉換爲另一個一致性狀態;
    I:Isolation,隔離性;一個事務所做出的操作在提交之前,是不能爲其它所見;隔離有多種隔離級別;
    D:durability: 持久性;一旦事務提交,其所做的修改會永久保存於數據庫中;

事務:
    啓動事務:START TRANSACTION
        ...
        ...
    結束事務:
        (1) COMMIT:提交
        (2) ROLLBACK: 回滾

    注意:只有事務型存儲引擎方能支持此類操作;

    建議:顯式請求和提交事務,而不要使用“自動提交”功能;
        autocommit={1|0}

    事務支持savepoint
        SAVEPOINT identifier
        ROLLBACK [WORK] TO [SAVEPOINT] identifier
        RELEASE SAVEPOINT identifier

    事務隔離級別:
        READ UNCOMMITTED (讀未提交)
        READ COMMITTED (讀提交)
        REPEATABLE READ (可重讀)
        SERIALIZABILE (可串行化)

        隔離級別過低,可能存在問題:
            髒讀;
            不可重複讀;
            幻讀;
            加鎖讀;

            mysql> SHOW GLOBAL VARIABLES LIKE '%isola%';  #查看隔離級別
            +---------------+-----------------+
            | Variable_name | Value           |
            +---------------+-----------------+
            | tx_isolation  | REPEATABLE-READ |
            +---------------+-----------------+
            1 row in set (0.00 sec)
            MariaDB [(none)]> SHOW VARIABLES LIKE 'tx%';

        tx_isolation:服務器變量,默認爲REPEATABLE-READ;可在SESSION級進行修改;

        mysql> SET tx_isolation='';  #修改隔離級別命令 
        mysql> SET tx_isolation='READ-UNCOMMITTED';
            READ-UNCOMMITTED
            READ-COMMITTED
            REPEATABLE-READ
            SERIALIZABLE

        MVCC: 多版本併發控制
            自動創建一個當前事務集的快照

    死鎖:
        兩個或多個事務在同一資源相互佔用,並請求鎖定對方佔用的資源的狀態;

    事務日誌:
        事務日誌的寫入類型爲“追加”,因此其操作爲“順序IO”;此日誌通常也被稱爲“預寫式日誌(write ahead logging)”;
        日誌文件大小相同,

MySQL事務

        mysql> SHOW GLOBAL VARIABLES LIKE 'innodb%';  (不支持運行修改,需要配置文件中修改,並重啓mysql服務)
            innodb_log_buffer_size          #日誌緩衝大小
            innodb_log_file_size            #日誌文件大小   (事務日誌不要過大)
            innodb_log_files_in_group       #同一日誌組中的文件數量
            innodb_log_group_home_dir       #日誌文件存放路徑
        不建議使用混合引擎。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章