尚シリコンバレー李玉婷先生MySQL課程--TCL言語


TCL(Transaction Control Language):トランザクション制御言語
一、事務
1つまたは複数のsql文のセットは、すべて実行されるか、すべて実行されない実行ユニットを構成します.トランザクションのACID属性原子性:すべて実行するか、またはすべてロールバックします.データのステータス操作の前と操作後の一貫性を保証します.複数のトランザクションが同じデータベースの同じデータを同時に操作する場合、1つのトランザクションの実行は別のトランザクションの干渉を受けません.1つのトランザクションがコミットされると、他のトランザクションが変更されない限り、データはローカルに永続化されます.
一、取引の作成
**暗黙的なトランザクション:**トランザクションには明示的なオープンと終了のタグがありません
**明示的なトランザクション:**トランザクションには、set autocommit=0を無効にするために、**自動コミット機能を設定する必要があります.
  1:    
set autocommit = 0;
start transaction; //   
  2:      sql  (select, insert, update, delete)
  1;
  2;
...
  3:    
commit;		    
rollback;	    

二、トランザクションの独立性レベル
  • トランザクションの同時発生の問題はどのように発生しますか?
  • トランザクションの同時発生の問題は何ですか?ダーティリード:1つのトランザクションが別のトランザクションにコミットされていないデータを読み取った場合、繰り返しリードできません.同じトランザクションで複数回読み取ったデータが一致しません.幻リード:1つのトランザクションがデータを読み取った場合、別のトランザクションが更新され、最初のトランザクションがより新しいデータがない
  • に読み込まれます.
  • トランザクションの同時発生を回避するにはどうすればいいですか?トランザクションの独立性レベル
  • を設定します.
    レベル
    READ UNCOMMITTED
    汚い読み、繰り返してはいけない読み、幻読み
    READ COMMITTED
    汚れた読みを避けることができます
    REPEATABLE READ
    汚れた読み、繰り返し不可読み、一部の幻読みを避けることができます
    SERIALIZABLE
    汚れた読み、重複しない読み、幻読みを避けることができます
  • 独立性レベルの設定:
      set session|global  transaction isolation level      ;
    
  • 独立性レベルの表示:
      select @@tx_isolation;