동시성/잠금 파라미터

다음은 데이터베이스 서버의 동시성 제어 및 잠금에 관한 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다.

파라미터 이름

타입

디폴트 값

최소값

최대값

deadlock_detection_interval_in_secs

int

1

1

 

isolation_level

int

3

1

6

lock_escalation

int

100000

5

 

lock_timeout_in_secs

int

-1

-1

 

lock_timeout_message_type

int

0

0

2

deadlock_detection_interval_in_secs

deadlock_detection_interval_in_secs는 중단된 트랜잭션에 대해 교착 상태 여부를 탐지하는 주기를 초 단위로 설정하기 위한 파라미터이다. CUBRID 시스템은 교착 상태에 있는 트랜잭션 중 하나를 롤백시켜 교착 상태를 해결한다. 디폴트 값은 1초이다. 탐지 주기가 길면 오랜 시간동안 교착 상태를 탐지할 수 없으므로 주의한다.

isolation_level

isolation_level은 트랜잭션의 격리 수준을 설정하기 위한 파라미터로 격리 수준이 높을수록 트랜잭션의 동시성이 적고 다른 동시성 트랜잭션에 의해 간섭받지 않는다. isolation_level 파라미터는 격리 수준을 의미하는 1에서 6까지의 정수값 또는 문자 스트링으로 설정하며, 디폴트 값은 TRAN_REP_CLASS_UNCOMMIT_INSTANCE이다. 각 격리 수준 및 파라미터 설정값에 대한 자세한 내용은 격리 수준 설정과 다음 표를 참조한다.

격리 수준

isolation_level 파라미터 설정값

SERIALIZABLE

"TRAN_SERIALIZABLE" or 6

REPEATABLE READ CLASS with
REPEATABLE READ INSTANCES

"TRAN_REP_CLASS_REP_INSTANCE" or "TRAN_REP_READ" or 5

REPEATABLE READ CLASS with
READ COMMITTED INSTANCES
(or CURSOR STABILITY)

"TRAN_REP_CLASS_COMMIT_INSTANCE" or "TRAN_READ_COMMITTED" or "TRAN_CURSOR_STABILITY" or 4

REPEATABLE READ CLASS with
READ UNCOMMITTED INSTANCES

"TRAN_REP_CLASS_UNCOMMIT_INSTANCE" or "TRAN_READ_UNCOMMITTED" or 3

READ COMMITTED CLASS with
READ COMMITTED INSTANCES

"TRAN_COMMIT_CLASS_COMMIT_INSTANCE" or 2

READ COMMITTED CLASS with
READ UNCOMMITTED INSTANCES

"TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE" or 1

lock_escalation

lock_escalation은 행에 대한 잠금이 테이블 잠금으로 확대되기 전에 개별 행에 허용되는 최대 잠금의 개수를 설정하기 위한 파라미터로 디폴트 값은 100,000이다. lock_escalation 파라미터의 설정값이 작으면, 메모리 잠금 관리에 의한 오버헤드가 적은 반면 동시성은 줄어든다. 반대로 설정값이 크면 메모리 잠금 관리에 의한 오버헤드가 큰 반면 동시성이 향상된다.

lock_timeout_in_secs

lock_timeout_in_secs는 잠금 대기 시간을 지정하기 위한 클라이언트 파라미터로 지정된 시간 이내에 잠금이 허용되지 않으면 해당 트랜잭션이 취소되고 오류가 반환된다. 디폴트 값인 -1로 설정하면 잠금이 허용될 때까지의 대기 시간이 무제한이고, 0으로 설정하면 잠금을 대기하지 않는다.

lock_timeout_message_type

lock_timeout_message_type은 잠금 타임아웃 발생 시 반환되는 메시지에 포함되는 정보 수준을 설정하는 파라미터이다. 디폴트 값인 0으로 설정하면 잠금 소유 정보가 메시지에 포함되지 않고, 1로 설정하면 잠금 소유 정보가 하나만 포함되며, 2로 설정하면 잠금 소유 정보가 모두 포함된다.

ERROR: Your transaction (index 3, cub_user@cdbs006.cub|15668) timed out waiting on    X_LOCK lock on instance 0|636|34 of class participant. You are waiting for user(s)  to finish.

ERROR: Your transaction (index 3, cub_user@cdbs006.cub|15668) timed out waiting on    X_LOCK lock on instance 0|636|34 of class participant. You are waiting for user(s) cub_user@cdbs006.cub|15615 to finish.

ERROR: Your transaction (index 3, cub_user@cdbs006.cub|15668) timed out waiting on    X_LOCK lock on instance 0|636|34 of class participant. You are waiting for user(s) cub_user@cdbs006.cub|15615, cub_user@cdbs006.cub|15596 to finish.