문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣTibero5, Tibero6 , Tibero7
문서번호ㅣTADTI213
개요
TAC 환경에서 동시성 제어 기능의 정상 동작 여부를 검증하기 위한 BMT 시나리오를 기술합니다.
방법
Row-Level Locking
Row-level locking 및 MVCC 기능을 설명합니다.
수행
| 수행 순서 | 시나리오 | |
|---|---|---|
| 세션 1 | 세션 2 | |
| 1 | 테이블(TEST1.RXTEST) 생성 | |
| 2 | 테이블(TEST1.RXTEST)에 데이터 입력 | |
| 3 | 테이블(TEST1.RXTEST)의 데이터 변경 - commit 하지 않음 | |
| 4 | 테이블(TEST1.RXTEST)의 데이터 변경 | |
| 5 | 테이블(TEST1.RXTEST)의 데이터 변경 commit | |
| 6 | HANG 이 풀리는 것을 확인 | |
결과
| 수행 순서 | 시나리오 | |
|---|---|---|
| 세션 1 | 세션 2 | |
| 1 | 테이블(TEST1.RXTEST) 생성 | |
tbsql TEST1/TEST1 TmaxData Corporation Copyright (c) 2008- . All rights reserved.
CREATE TABLE TEST1.RXTEST(ID NUMBER, TABLE 'TEST1.RXTEST' CREATED. | ||
| 2 | 테이블(TEST1.RXTEST)에 데이터 입력 | |
INSERT INTO TEST1.RXTEST VALUES ( 1,'TEST'); 1 ROW INSERTED. COMMIT; COMMIT COMPLETED.
SELECT * FROM TEST1.RXTEST; ----------- 1 TEST | ||
| 3 | 테이블(TEST1.RXTEST)의 데이터 변경 - commit 하지 않음 | |
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS'; Session altered.
SELECT SYSDATE FROM DUAL;
2017/06/07 12:13:26 1 row selected.
UPDATE TEST1.RXTEST SET NAME = 1 ROW UPDATED.
SELECT * FROM TEST1.RXTEST; ------------ 1 TESTTEST 1 ROW SELECTED. | ||
| 4 | 세션 2 테이블(TEST1.RXTEST)의 데이터 변경 | |
tbsql TEST2/TEST2 tbSQL 7 TmaxData Corporation Copyright (c) 2008- . All rights reserved.
ALTER SESSION SET Session altered.
SELECT SYSDATE FROM DUAL;
2017/06/07 12:18:26 1 row selected.
UPDATE TEST1.RXTEST SET NAME = <HANG> | ||
| 5 | 테이블(TEST1.RXTEST)의 데이터 변경 commit | |
COMMIT; COMMIT COMPLETED. | ||
| 6 | 세션 2 HANG 이 풀리는 것을 확인 | |
| 1 ROW UPDATED. | ||
MVCC 기능
수행
| 수행 순서 | 시나리오 | |
|---|---|---|
| 세션 1 | 세션 2 | |
| 1 | 테이블(TEST1.MVCCTEST) 생성 | |
| 2 | 테이블(TEST1.MVCCTEST)에 데이터 입력 | |
| 3 | 테이블(TEST1.MVCCTEST)의 데이터 변경 | |
| 4 | 테이블(TEST1.MVCCTEST)의 변경된 데이터 조 | |
| 5 | 테이블(TEST1.MVCCTEST)의 데이터 조회 | |
| 6 | 변경된 데이터 commit | |
| 7 | 테이블(TEST1.MVCCTEST)의 변경된 데이터 조회 | |
결과
| 수행 순서 | 세션 1 | 세션 2 |
|---|---|---|
| 1 | 테이블(TEST1.MVCCTEST) 생성 | |
tbsql TEST1/TEST1
| ||
| 2 | 테이블(TEST1.MVCCTEST)에 데이터 입력 | |
INSERT INTO TEST1.MVCCTEST VALUES(1, 'TEST');
| ||
| 3 | 테이블(TEST1.MVCCTEST)의 데이터 변경 | |
| UPDATE TEST1.MVCCTEST SET NAME = 'TEST123' WHERE ID = 1; 1 ROW UPDATED. | ||
| 4 | 테이블(TEST1.MVCCTEST)의 변경된 데이터 조회 | |
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS'; Session altered.
SELECT SYSDATE FROM DUAL;
----------------------- 2017/06/07 12:20:26 1 row selected.
SELECT * FROM TEST1.MVCCTEST ID NAME ------------ 1 TEST123 1 ROW SELECTED. | ||
| 5 | 세션 2 테이블(TEST1.MVCCTEST)의 데이터 조회 | |
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS'; Session altered.
SELECT SYSDATE FROM DUAL; -------------------------------- 2017/06/07 12:22:26 1 row selected.
SELECT * FROM TEST1.MVCCTEST ID NAME ------------- 1 TEST 1 ROW SELECTED. | ||
| 6 | 변경된 데이터 commit | |
SELECT SYSDATE FROM DUAL; ----------------------- 2017/06/07 12:23:26 1 row selected.
COMMIT; COMMIT COMPLETED | ||
| 7 | 세션 2 테이블(TEST1.MVCCTEST)의 변경된 데이터 조회 | |
SELECT SYSDATE FROM DUAL; SYSDATE ---------------------- 2017/06/07 12:25:26 1 row selected.
SELECT * FROM TEST1.MVCCTEST ID NAME ----------- 1 TEST123 1 ROW SELECTED. | ||