반응형

TM Lock

 

정의
Table Lock 또는 Table Level Lock
Tx Lock이 걸린 row가 저장된 테이블에 걸리는 lock으로 DML작업 시 해당 테이블의 구조가 변경되는 것을 예방함.

 

부연 설명
Table Lock의 Mode에는 RS , RX , S , SRX , X 가 있음 ( 이하 퍼온자료 )

 

RS ( Row Share Lcok ) - SELECT .. FROM .. WHERE .. FOR UPDATE OF ..; 이나 LOCK TABLE .. IN ROW SHARE MODE;
명령에 의해 해당 테이블에는 RS LOCK 이 생긴다. RS LOCK이 걸린 테이블에는 RS , RX , S , SRX LOCK 을 걸 수 있고 , X LOCK 은 걸 수 없다. 단, SELECT .. FROM FOR UPDATE OF 명령에 의해 WHERE 조건에 걸린 ROW 에 대해서는 TX LOCK 이 생기므로 이 ROW 에 대해서 UPDATE , DELETE 를 실행할때는 테이블에 대해서는 RX LOCK 이 생기므로 에러는 안 나지만, COMMIT 이나 ROLLBACK 할때까지 WAITING 을 한다. SELECT .. FOR UPDATE OF; 문장은 테이블에는 RS LOCK 이므로 에러는 안나지만, ROW 에 대해서는 TX LOCK이 걸리므로 WAITING 한다.

 

RX ( ROW EXCLUSIVE LOCK ) - UPDATE ..;, INSTERT INTO ..; , DELETE FROM ..; 이나

                                        LOCK .. IN ROW EXCLUSIVE MODE; 명령에 의해 테이블에 걸리는 LOCK 이다.

                                        RX LOCK 도 RS LOCK 과 비슷한 내용이고 , 단지 S, SRX , X LOCK 을 걸수 없다.

 

S ( SHARE LOCK ) - LOCK .. IN SHARE MODE; 에 의해 테이블에 생긴 LOCK 이다. S LOCK은 같은 테이블에 대해서

                          RS , S LOCK 만 가능하고 , RX , SRX , X LOCK 을 걸 수는 없다.
SQL> LOCK TABLE EMP IN SHARE MODE; <- 사원 테이블에 INSERT, UPDATE ,DELETE 할 수 없다.

 

SRX ( SHARE ROW EXCLUSIVE ) - LOCK TABLE .. IN SHARE ROW EXCLUSIVE MODE; 에 의해 테이블에 생긴 LOCK 이다.
SRX LOCK 은 같은 테이블에 대해서 RS LOCK 만 가능하고 RX , SRX , S , X LOCK 을 걸 수 없다.
SQL> LOCK TABLE 사원 IN SHARE ROW EXCLUSIVE MODE; <-사원 테이블에 SELECT ..FOR UPDATE OF;는 가능하지만
INSERT , DELETE , UPDATE 는 할 수 없다.

X (EXCLUSIVE) - LOCK TABLE .. IN EXCLUSIVE MODE; 에 의해 테이블에 생긴 LOCK 이다. X LOCK 은 같은 테이블에서는 어떠한 LOCK도
걸 수 없다. 즉, DROP TABLE ..; , ALTER TABLE ..; 등의 DDL문장에 의해 테이블에 생기는 LOCK 이다.


Undo Retention

정의
snapshot too old 에러를 피하ㅣ 위해 undo 데이터를 일정 시간(초 단위) 동안 유지하도록 지정해 놓는 파라미터
오라클 데이터베이스가 트랜잭션이 종료된 undo 정보를 유지하고자하는 최소의 시간

부연 설명
undo segment는 트랜잭션이 종료되면서 , 다른 트랜잭션에 의해 재사용된다.
따라서 시간이 지남에 따라 오래된 undo 정보는 데이터베이스에서 삭제가 된다.
읽기 일관성이나 플래시백 쿼리를 위해 일정 기간 동안 undo 데이터를 유지하고자 할 때, undo retention을 지정할 수 있다.
만약 , retention을 1800으로 지정했을 경우, 현재 시점으로부터 최소 1800초 전의 undo 정보를 데이터베이스에서 유지가 된다.
하지만 , undo tablespace의 모든 공간을 사용했을 때에는 retention으로 유지되는 정보라할지라도 새로운 공간을 할당받기 위해
삭제된다. (이를 예방하기 위해 retention guarantee를 지정함)

연관 개념
snapshot too old, undo , retention guarantee , read consistency , transaction


Cursor

정의
해당 SQL의 파싱(Parsing)정보가 저장되어 있는 주소

부연 설명
-PGA정의 : 데이터베이스에 접속하는 모든 유저에게 할당되는 각각의 서버 프로세서가, 독자적으로 사용하는 오라클 메모리 영역
-PGA 구성요소
1. 정렬공간(Sort Area) : 메모리상에서 정렬을 수행하기 위한 공간
2. 세션정보(Session Information) : 서버 프로세서에 의해 추출된 결과 값을 전달하기 위해 필요한 유저 프로세서의 세션정보를 저장
3. 커서 상태 정보(Cursor State) : 해당 SQL의 파싱(Parsing) 정보가 저장되어 있는 주소를 저장
4. 변수저장 공간(Stack Space) : SQL문장에서 바인드 변수를 사용했을 때 해당 바인드 변수를 저장하는 공간
-SGA 정의 : 오라클이 데이터를 읽거나 변경하기 위해 사용하는 공용 메모리 영역
-SGA 구성요소
1. Shared Pool : SGA를 관리하는 매커니즘, 파라미터 정보 , 실행된 SQL, SQL 분석/실행정보 및 오라클 오브젝트 정보를 저장하는
메모리 공간
*라이브러리 캐쉬 : 유저가 실행한 SQL 및 오라클이 사용하는 SQL에 대한 분석정보 및 실행계획이 저장
*데이터 딕셔너리 캐쉬 : 오라클 오브젝트 정보 및 권한 등의 정보가 저장
2. Database Buffer Cache : 오라클이 데이터를 읽고 수정하기 위해 디스크에 존재하는 데이터를 읽어 저장하는 메모리 공간이며
LRU알고리즘에 의해 관리됨, 캐쉬 내부의 영역으로는 Default 영역, Recycle 영역으로 나눠져 있으며
Keep > Default > Recycle 순으로 메모리를 할당됨
3. Redo Log Buffer : 오브젝트 및 DDL이 일어날 떄 생성되는 로그를 저장하는 메모리 공간
4. Large Pool : UGA 영역 저장(PGA영역의 Sort Area, Session Information, Cursor State), RMAN의 정보를 저장함, 병렬프로세스의
정보 저장, I/O 슬래이브 프로세서의 정보저장
5. Java Pool : 자바 명령을 구문분석 할 때 사용하는 메모리 공간
6. Streems Poll
-LRU 알고리즘 : 최근에 가장 적게 사용한 메모리 공간을 필요할 때 가장 먼저 사용하는 오라클의 메모리 관리 방법

Cost

정의
"Optimizer가 문장을 수행하는데 걸릴 것이락 예상하는 추측 시간" 이라고 할 수 있다.

부연 설명
Cost based Oracle Fudam entals의 저자인 Jonathan 은
"Cost란 Optimizer가 문장을 수행하는데 걸릴 것이라고 예상하는 추측 시간을 의미하며, 과거에도 그래왔다." 라고 말한다.
수많은 사람들이 Cost란 I/O와 관련 있다고 했지만, 나 역시도 그랬었다.
즉 Cost는 쿼리의 예상 수행 시간인 것이다.

쿼리를 수행하는데 걸린 시간의 공식은?
TotalTime = CPU Time + I/O Time + Wait Time
Wait Time은 외적인 문제가 있기 때문에 오라클 Cost의 영향을 주는것이 아니기에 제외가 된다고한다..
CPU Time + I/O Time = Cost

'ORACLE > 여러가지정리' 카테고리의 다른 글

11g Upgrade 후 발생되는 trace 파일  (0) 2020.07.01
Posted by Max-Jang
,