<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評論-209  文章-0  trackbacks-0

    事務(wù)具有ACID四種特性。

    但是Isolation并發(fā)可能引起如下問題:

    1.臟讀

    允許讀取到未提交的臟數(shù)據(jù)。

    2.不可重復(fù)讀

    如果你在時間點T1讀取了一些記錄,在T2時再想重新讀取一次同樣的這些記錄時,這些記錄可能已經(jīng)被改變、或者消失不見。

    3.幻讀

    解決了不重復(fù)讀,保證了同一個事務(wù)里,查詢的結(jié)果都是事務(wù)開始時的狀態(tài)(一致性)。但是,如果另一個事務(wù)同時提交了新數(shù)據(jù),本事務(wù)再更新時,就會“驚奇的”發(fā)現(xiàn)了這些新數(shù)據(jù),貌似之前讀到的數(shù)據(jù)是“鬼影”一樣的幻覺。

     

    由ANSI/ISO定義的SQL-92標(biāo)準(zhǔn)定義的四種隔離級別

    1.Read Uncommitted

    2.Read Committed

    3.Repeatable Read

    4.Serializable


    隔離解別臟讀不可重復(fù)讀幻讀
    Read UncommittedYYY
    Read CommittedNYY
    Repeatable(default)NNY
    SerializableNNN

    下面用Mysql數(shù)據(jù)庫做一些小實驗

    Mysql 版本號

     

    1. mysql> select version();  
    2. +------------+  
    3. | version()  |  
    4. +------------+  
    5. | 5.1.52-log |  
    6. +------------+  
    7. 1 row in set (0.00 sec)  

     

     

    查看InnoDB存儲引擎 系統(tǒng)級的隔離級別 和 會話級的隔離級別

    1. mysql> select @@global.tx_isolation,@@tx_isolation;  
    2. +-----------------------+-----------------+  
    3. | @@global.tx_isolation | @@tx_isolation  |  
    4. +-----------------------+-----------------+  
    5. REPEATABLE-READ       | REPEATABLE-READ |  
    6. +-----------------------+-----------------+  
    7. 1 row in set (0.00 sec)  

    更改會話級的隔離級別

     

    1. Session 1:  
    2. mysql> set session tx_isolation='read-uncommitted';  
    3. Query OK, 0 rows affected (0.00 sec)  
    4. mysql> select @@global.tx_isolation,@@tx_isolation;  
    5. +-----------------------+------------------+  
    6. | @@global.tx_isolation | @@tx_isolation   |  
    7. +-----------------------+------------------+  
    8. REPEATABLE-READ       | READ-UNCOMMITTED |  
    9. +-----------------------+------------------+  
    10. 1 row in set (0.00 sec)  
    11.   
    12.   
    13. Session 2:  
    14. mysql> select @@global.tx_isolation, @@tx_isolation;  
    15. +-----------------------+-----------------+  
    16. | @@global.tx_isolation | @@tx_isolation  |  
    17. +-----------------------+-----------------+  
    18. REPEATABLE-READ       | REPEATABLE-READ |  
    19. +-----------------------+-----------------+  
    20. 1 row in set (0.00 sec)  

    更改系統(tǒng)級的隔離級別

     

     

    1. Session 1:  
    2. mysql> set global tx_isolation='read-uncommitted';  
    3. Query OK, 0 rows affected (0.00 sec)  
    4. mysql> select @@global.tx_isolation,@@tx_isolation;  
    5. +-----------------------+------------------+  
    6. | @@global.tx_isolation | @@tx_isolation   |  
    7. +-----------------------+------------------+  
    8. READ-UNCOMMITTED      | READ-UNCOMMITTED |  
    9. +-----------------------+------------------+  
    10. 1 row in set (0.00 sec)  
    11.   
    12. Session 2:  
    13. mysql> select @@global.tx_isolation, @@tx_isolation;  
    14. +-----------------------+-----------------+  
    15. | @@global.tx_isolation | @@tx_isolation  |  
    16. +-----------------------+-----------------+  
    17. READ-UNCOMMITTED      | REPEATABLE-READ |  
    18. +-----------------------+-----------------+  
    19. 1 row in set (0.00 sec)  


    關(guān)閉SQL語句的自動提交

     

    1. mysql> set autocommit=off;  
    2. Query OK, 0 rows affected (0.00 sec)  


    查看SQL語句自動提交是否關(guān)閉

     

    1. mysql> show variables like 'autocommit';  
    2. +---------------+-------+  
    3. | Variable_name | Value |  
    4. +---------------+-------+  
    5. | autocommit    | OFF   |  
    6. +---------------+-------+  
    7. 1 row in set (0.00 sec)  

    建立實驗表

     

     

     

    1. mysql> create table tao (col1 tinyint unsigned, col2 varchar(20), primary key(col1));  
    2. Query OK, 0 rows affected (0.08 sec)  
    3.   
    4. mysql> show create table tao \G;  
    5. *************************** 1. row ***************************  
    6.        Table: tao  
    7. Create TableCREATE TABLE `tao` (  
    8.   `col1` tinyint(3) unsigned NOT NULL DEFAULT '0',  
    9.   `col2` varchar(20) DEFAULT NULL,  
    10.   PRIMARY KEY (`col1`)  
    11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8  
    12. 1 row in set (0.00 sec)  

    演示臟讀

     



    更改隔離級別為Read Committed后,不存在臟讀的問題。

     

    1. mysql> set global tx_isolation='read-committed';  
    2. Query OK, 0 rows affected (0.00 sec)  
    3. mysql> set session tx_isolation='read-committed';  
    4. Query OK, 0 rows affected (0.00 sec)  

    演示不可重復(fù)讀

     



    更改隔離級別為Repeatable Read后,不存在不可重復(fù)讀的問題。

     

    1. mysql> set global tx_isolation='repeatable-read';  
    2. Query OK, 0 rows affected (0.00 sec)  
    3.   
    4. mysql> set session tx_isolation='repeatable-read';  
    5. Query OK, 0 rows affected (0.00 sec)  

    幻讀

     



    更改隔離級別為完全串行化 Serializable 后,不存在幻讀的問題。

     

    1. mysql> set global tx_isolation='serializable';  
    2. Query OK, 0 rows affected (0.00 sec)  
    3.   
    4. mysql> set session tx_isolation='serializable';  
    5. Query OK, 0 rows affected (0.00 sec)  

    在這種情況下,只允許一個事務(wù)在執(zhí)行,其它事務(wù)必須等待這個事務(wù)執(zhí)行完后才能執(zhí)行。沒有并發(fā),只是單純的串行。
    posted on 2015-01-15 19:57 xzc 閱讀(399) 評論(3)  編輯  收藏 所屬分類: mysql

    評論:
    # re: MySQL隔離級別 2015-01-15 20:00 | xzc
    SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}  回復(fù)  更多評論
      
    # re: MySQL隔離級別 2015-01-15 20:00 | xzc
    set global tx_isolation='READ-COMMITTED';  回復(fù)  更多評論
      
    # re: MySQL隔離級別 2015-03-31 10:11 | xzc
    select @@global.tx_isolation,@@tx_isolation;  回復(fù)  更多評論
      
    主站蜘蛛池模板: 97在线视频免费公开观看| 日本妇人成熟免费中文字幕| 久久伊人久久亚洲综合| **俄罗斯毛片免费| 亚洲国产成人手机在线观看| 免费看小12萝裸体视频国产| 2022国内精品免费福利视频| 亚洲最大黄色网站| 亚洲天堂在线视频| 亚洲毛片免费视频| 人禽伦免费交视频播放| 亚洲精品美女在线观看播放| 永久免费看bbb| 麻豆国产精品免费视频| 免费国产污网站在线观看不要卡| 亚洲激情电影在线| 国产午夜亚洲不卡| 日本一区免费电影| 91精品免费观看| 国产真人无码作爱免费视频| 国产成人精品日本亚洲11| 亚洲色图在线观看| 亚洲成a人片在线播放| 暖暖在线日本免费中文| 免费在线观看视频网站| 免费av片在线观看网站| g0g0人体全免费高清大胆视频| 亚洲国产成人久久一区二区三区| 亚洲av无码电影网| 亚洲欧洲自拍拍偷午夜色| 亚洲av中文无码乱人伦在线r▽| 久久亚洲中文字幕精品一区| 免费在线一级毛片| 国产一区二区三区在线免费观看| 最近中文字幕无免费视频| 国产精品久久久久免费a∨| 18禁止看的免费污网站| 亚洲黄色免费观看| 啦啦啦中文在线观看电视剧免费版 | 无码国产精品一区二区免费式芒果 | 9420免费高清在线视频|