MySQL - Transaction Isolation Levels


1.MySQL基本SQL文


(1)テーブルの作成
CREATE TABLE PRODUCTS_1 (
PRODUCT_ID int NOT NULL AUTO_INCREMENT,
PRODUCT_NAME varchar(200) NOT NULL,
PRODUCT_TYPE varchar(45) NOT NULL,
PRICE decimal(10,2) NOT NULL,
QUANTITY int NOT NULL default 0,
PRIMARY KEY (PRODUCT_ID),
UNIQUE KEY PRODUCT_NAME_UNIQUE (PRODUCT_NAME)
) ENGINE=InnoDB;
(2)表の詳細
desc store.products_1
(3)表データの挿入
INSERT INTO `STORE`.`PRODUCTS_1`
(`PRODUCT_NAME`,
`PRODUCT_TYPE`,
`PRICE`,
`QUANTITY`)
VALUES
('아이폰','mobile',999,10);
(4)テーブルデータの更新
UPDATE PRODUCTS_1 
SET 
    quantity = 200
    // quantity = quantity + 50
WHERE
    product_id = 1;
    // product_id in (1,2);
(5)テーブルデータの更新
UPDATE PRODUCTS_1 
SET 
    quantity = 200
    // quantity = quantity + 50
WHERE
    product_id = 1;
    // product_id in (1,2);
(6)テーブルデータの削除
DELETE FROM PRODUCTS_1 
WHERE PRODUCT_ID = 3;

2. Transaction Isolation Levels


同じデータの変更またはアクセス時に複数のセッションをロック
(1) autocommit OFF & start transaction

  • commitコマンドを発行する前に、Xを反映する必要があります.


  • コミット後にトランザクションを反映

  • (2)READ-CoMMITTED設定
  • 左更新履歴の発行が完了すると、右セッションは
  • を問い合わせることができます.
    (3)READ-UNCOMMIITTED設定
  • 左側更新履歴は提出されていませんが、これらの履歴は右側セッションで確認できます~DIRTY READ
  • .
    (4)REPEATABLE READ設定
  • 左側セッション更新履歴を発行した場合、右側セッションはその事項を反映しません.
  • トランザクション内で同じクエリー・クエリーを実行する場合は、同じ結果が得られます.
  • (5)SerialIZABLEの設定
  • の他のセッションでトランザクション(クエリー、変更)が行われている場合は、他のトランザクションからアクセスできません.