InnoDB

1. SELECT ... FOR SHARE, SELECT ... FOR UPDATE 구문에서 NOWAIT, SKIP LOCKED 옵션 지원

  • NOWAIT : 행이 잠긴 경우 오류와 함께 실패

  • SKIP LOCKED : 결과 집합에서 잠긴 행 제외 반환

  • SELECT ... LOCK IN SHARE MODE => SELECT ... FOR SHARE 로 변경

세부 정보
# [세션 1]
CREATE TABLE t1 (id INT PRIMARY KEY);

INSERT INTO t1 VALUES(1),(2),(3);

SELECT * FROM t1;

/*
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
+----+
*/

START TRANSACTION;

SELECT * FROM t1 WHERE id = 2 FOR UPDATE;

/*
+----+
| id |
+----+
|  2 |
+----+
*/


# [세션 2]
START TRANSACTION;

SELECT * FROM t1 WHERE id = 2 FOR UPDATE NOWAIT;
# ERROR 3572 (HY000): Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set.


# [세션 3]
START TRANSACTION;

SELECT * FROM t1 FOR UPDATE SKIP LOCKED;

/*
+----+
| id |
+----+
|  1 |
|  3 |
+----+
*/

2. LOB 데이터에 대한 소규모 업데이트에 언두 로깅이 지원되어 크기가 100바이트 이하인 LOB 업데이트 성능을 향상

3. TempTable 스토리지 엔진은 BLOB(Binary Large Object) 데이터 타입 지원

  • BLOB 데이터가 포함된 임시 테이블을 사용하는 쿼리의 성능 향상

Last updated