MySql事務及隔離等級

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   使用   sp   資料   div   

在資料庫中,所謂事務是指作為單個邏輯工作單元執行的一系列操作。

 

事務的操作:  先定義開始一個事務,然後對資料作修改操作,    這時如果提交(COMMIT),這些修改就永久地儲存下來    如果回退(ROLLBACK),資料庫管理系統將放棄您所作的所有修改而回到開始事務時的狀態。 在JDBC中,事務預設是自動認可的,每次執行一個 SQL 陳述式時,如果執行成功,就會向資料庫自動認可,而不能復原 為了讓多個 SQL 陳述式作為一個事務執行:  •調用 Connection 對象的 setAutoCommit(false); 以取消自動認可事務  •在所有的 SQL 陳述式都成功執行後,調用 commit(); 方法提交事務  •在出現異常時,調用 rollback(); 方法復原事務 

命令列實現交易處理

  1  查看提交模式    select @@autocommit  2、用begin,rollback,commit來實現         begin              //開始一個事務                rollback          //交易回復               commit          //提交事務  3、 直接用set來改變mysql的自動認可模式

        MYSQL預設是自動認可的,也就是你提交一個QUERY,它就直接執行
    set autocommit=0     禁止自動認可
    set autocommit=1    開啟自動認可,   來實現事務的處理。
      * 當你用 setautocommit=0 的時候,你以後所有的SQL都將做為交易處理,直到你用commit確認或rollback結束。

         *  注意:當你結束這個事務的同時也開啟了個新的事務

 

交易隔離等級(transaction isolation levels):隔離等級就是對事務並發控制的四個等級。分為

    1  序列化(SERIALIZABLE)

    2  可重複讀(REPEATABLE READ)

    3  讀已提交(READ COMMITED)

    4  讀未提交(READ UNCOMMITED)   

 

 

1、mysql預設的隔離等級為Repeatable_Read

2、sqlserver 預設的隔離等級為Read Commited

3、oracle資料庫支援READ COMMITTED和SERIALIZABLE兩種事務隔離性層級,不支援READ UNCOMMITTED和REPEATABLE READ這兩種隔離性層級,Oracle資料庫預設使用的事務隔離性層級卻是READ COMMITTED.

 

設定當前mysql.exe的隔離等級
隔離級需要使用SET 命令來設定其文法如下:
SET  TRANSACTION ISOLATION    LEVEL   隔離等級

     隔離等級 分為四種:
 READ UNCOMMITTED

        |  READ COMMITTED

       | REPEATABLE READ
                           | SERIALIZABLE

查詢隔離等級

          select @@tx_isolation

設定資料庫系統的全域的隔離等級

     隔離級需要使用SET 命令來設定其文法如下:
 SET  global  TRANSACTION ISOLATION    LEVEL   隔離等級

 

 

對於同時啟動並執行多個事務,當這些事務訪問資料庫相同的資料時,如果沒有採取必要的隔離機制,就會產生並發問題.

  髒讀:一個事務讀取了另一個事務改寫但還未提交的資料,如果這些資料被復原,則讀到的資料是無效的。

  不可重複讀取:在同一事務中,多次讀取同一資料返回的結果有所不同。換句話說就是,後續讀取可以讀到另一事務已提交的更新資料。

  可重複讀:在同一事務中多次讀取資料時,能夠保證所讀資料一樣,也就是,後續讀取不能讀到另一事務已提交的更新資料。

  幻讀:一個事務讀取了幾行記錄後,另一個事務插入一些記錄,幻讀就發生了。再後來的查詢中,第一個事務就會發現有些原來沒有的記錄。

MySql事務及隔離等級

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.