DBMS 2
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
①여러 사용자가 동시에 데이터베이스를 액세스할 때에는 다음과 같은 데이터베이스의 무결성을 위반하는 바람직하지 않은 현상이 발생될 수 있습니다 ②A와 B라는 사용자가 동일한 데이터를 액세스한다면, 다음과 같은 현상이 발생할 수 있습니다. ①분리 수준은 다음과 같이 4 가지로 구분됩니다. ②분리 수준의 유형별 의미는 다음과 같습니다. ①분리 수준>을 지정할 때는 RR, RS, CS, UR 이라는 키워드를 이용합니다. 대소문자는 구별하 지 않습니다. ②분리 수준의 유형을 지정하는 방법은 다음과 같습니다. ③다양한 환경에서 분리 수준을 UR로 설정하는 예는 다음과 같습니다. ①잠금이 적용되는 데이터베이스 오브젝트는 다음과 같습니다. ②잠금을 적용하는 방법은 다음과 같습니다. ①테이블 잠금 유형과 잠금 유형간의 호환표은 다음과 같습니다. ②테이블 잠금 유형의 특성은 다음과 같습니다. ①데이터의 기본 잠금 수준은 행 잠금입니다. 기본 잠금 수준을 테이블 잠금으로 지정하면, SQL문 을 실행할 때 항상 테이블 잠금이 적용됩니다. ②alter table 문에서 LOCKSIZE 옵션을 이용하여 지정합니다. ③lock table 문에서 LOCKSIZE 옵션을 이용하여 지정합니다. ①행 잠금 유형과 잠금 유형간의 호환표은 다음과 같습니다. ②행 잠금 유형의 특성은 다음과 같습니다. ①테이블 잠금과 행 잠금의 단계는 다음과 같습니다. 하위 잠금이 적용된 상태에서 상위 잠금이 요 청되면, 하위 잠금 정보는 상위 잠금 정보로 갱신됩니다. ②SELECT문의 조건문에서 고유한 인덱스가 있는 컬럼을 이용하여 데이터를 조회하면, 해당 행에 대해 NS 또는 S 모드의 잠금이 적용됩니다. 동일한 행에 대해 UPDATE 문을 다시 실행하면, X 잠금이 적용되고, LOCKLIST에 저장된 해당 행에 대한 NS 또는 S 모드의 잠금 정보는 X 모드 의 잠금으로 갱신됩니다. ①update db cfg 명령어로 데이터베이스 구성 변수인 LOCKLIST 구성 변수를 이용하여 잠 금 정보를 저장하는 메모리 영역의 크기를 조절합니다. 크기>는 4K 페이지 단위로 지정합니다. ②잠금 정보는 데이터베이스별로 공유 메모리에 있는 LOCKLIST 영역에 저장됩니다. 잠금 정보의 양이 LOCKLIST의 크기를 초과하게 되면, 가장 많은 행 잠금을 가진 테이블을 식별하여 그 테 이블에 대한 행 잠금을 모두 취소하고 테이블 잠금을 적용합니다. ③MAXLOCKS 구성 변수는 LOCKLIST 구성 변수가 지정한 크기에서 한 응용프로그램이 사용 할 수 있는 최대 비율을 지정합니다. 비율>은 백분율로 표시합니다. ④한 응용프로그램에 대한 잠금 정보의 양이 MAXLOCKS의 비율을 초과하게 되면, 해당 응용프 로그램에서 가장 많은 행 잠금을 가진 테이블을 식별하여 그 테이블에 대한 행 잠금을 모두 취소 하고, 테이블 잠금을 적용합니다. ①update db cfg 명령어로 LOCKTIMEOUT 데이터베이스 구성 변수를 설정합니다. 잠금 대기 시간>은 1초 단위로 표시합니다. ②LOCKTIMEOUT 데이터베이스 구성 변수의 기본값은 -1로서 무한대로 대기하는 것을 의미합 니다. 값을 0 으로 설정하면, SQL문 요청 시점에서 잠금을 획득하지 못하면 즉시 중단되게 합니 다. 일반적인 OLTP 환경에서는 잠금 대기 시간을 30초 이내로 설정하도록 합니다. 잠금 대기 시간 이내에 필요한 잠금을 획득하면, 응용프로그램은 작업을 계속할 수 있습니다. ③LOCKTIMEOUT 구성 변수의 값을 초과할 때까지 필요한 잠금을 획득하지 못하면, 응용프로 그램은 중단되어 SQL0911N, SQLSTATE 40001과 이유 코드 68 이 반환됩니다. ①update db cfg 명령어로 DLCHKTIME 데이터베이스 구성 변수를 설정합니다. 점검 간 격>은 밀리초(1000분의 1초) 단위로 표시합니다. ②DLCHKTIME 구성 변수의 기본값은 10000 ms로 10초 간격으로 교착 상태가 점검됩니다. ③교착 상태가 감지되면, 희생자(victim)로 선정된 한 쪽의 응용프로그램은 강제로 종료되고, SQL0911N, SQLSTATE 40001과 이유 코드 2가 반환됩니다.동시성 제어
동시성 제어
동시성과 무결성
분리 수준
분리 수준 지정 방법
잠금의 대상
테이블 잠금의 유형
테이블 잠금 지정 방법
$ db2 "alter table 테이블명> LOCKSIZE TABLE"
$ db2 "alter table 테이블명> LOCKSIZE ROW"
$ db2 "lock table 테이블명> in SHARE mode"
$ db2 "lock table 테이블명> in EXCLUSIVE mode"
행 잠금 유형
잠금 변환 현상
잠금 상승 현상
$ db2 update db cfg for 데이터베이스명> using LOCKLIST 크기>
$ db2 update db cfg for 데이터베이스명> using MAXLOCKS 비율>
잠금 대기 현상
$ db2 update db cfg for 데이터베이스명> using LOCKTIMEOUT 잠금 대기 시간>
교착 상태
$ db2 update db cfg for 데이터베이스명> using DLCHKTIME 점검 간격>