Logging Mode information
원본출처 : 딧세님 홈페이지 (http://informix.we.ro/)
▒▒▒ 로깅모드 ▒▒▒
1. No Logging Mode
: 논리 로그에 정보가 거의 로깅되지 않고, 단지 create/drop table, create/drop index, create/drop procedure, rename table/column, alter table등의 DDL문만 로깅됩니다. “로킹 미지정” 모드에서는 이러한 구문외에 행의 변경은 로깅되지 않으며 명령을 실행한 다음 그 결과 코드만 되돌려 집니다. “로깅 미지정”으로 설정하면 처리율은 높을지 모르지만 나중에 중대한 인스턴스 오류가 발생할 경우, 변경된 데이터베이스 내용을 재구축할 수 없습니다. 따라서 디스크에 기록된 변경 내용은 언제든지 사용할 수 있으나, 복원해야 할 경우에는 마지막으로 생성한 인스턴스 백업으로만 복원할 수 있습니다.
2. ANSI Mode
: 버퍼 미지정 모드와 비슷하지만, 이모드에서는 ANSI 규격의 트랜잭션도 실행할 수 있다는 점이 다릅니다. ANSI 규격의 트랜잭션에서는 각 테이블 참조에 대해 고유한 소유자 이름을 지정하고, 테이블 주순 권한에 따라 기본값을 다르게 지정할 수 있는 기능이 포함됩니다. 또한 커서의 갱신 기능과 읽기 기능을 다르게 하고, 자료형 오버플로 및 정의 구문에 대해 문자와 숫자의 반응 방법을 다르게 할수 있습니다. 운영환경상 반드시 ANSI 표준이 필요한 경우가 아니라면, “표준 ANSI” 모드로 설정하지 않는 것이 좋습니다.
3. Unbuffered Logging Mode
: 버퍼 미지정 로깅으로 설정한 데이터베이스 환경에서는 트랜젝션이 완료될때마다 트랜 잭션 정보가 들어있는 논리 및 물리 로그버퍼를 플러시합니다.중대한 인스턴트 오류가 발생해도 자료 무결성이나 일관성 등을 확보할수 있는 반면, 트랜잭션이 완료될 때마다 버퍼의 내용을 디스크로 플로시하므로 스크 입출력 작업이 빈번하게 일어납니다. 또한 디스크로 플러시할 때 현재 처리중인 트랜잭션에 대해 버퍼에 보관된 정보를 논리로그에 기록하므로, 시간이 지나면 논리 로그 페이지에 불필요한 자료가 많아집니다. 따라서 버퍼지정 데이터베이스 환경에서보다 디스크의 로그 파일이 더 빨리 체워지지만 로그 파일에 쌓인 모든 자료들이 “실제로” 꼭 필요한 자료는 아니라는 것입니다.
4. Buffered Logging Mode
: 버퍼 지정 로그 데이터베이스 환경에서는 버퍼가 가득 차거나, 검사점이 발생하거나, 트랜잭션을 생성한 사용자의 연결이 종료되어 트랜잭션이 더 이상 로그에 기록되지 않을때까지 논리 및 물리 로그 버퍼에 트랜잭션 정보를 저장합니다.
버퍼 지정 로그 데이터베이스의 트랜잭션 정보가 해제되는 또 다른 조건이 있으며, 이는 한 인스턴스에 존재하는 논리 로그 버퍼 집합이 하나뿐이기 때문입니다. 이 조건은 버퍼 미지정 데이터베이스에서 트랜잭션이 수행될 때 일어나며, 이 때 버퍼(모드) 로그 정보가 버퍼 미지정(모드) 로그 정보와 함께 디스크에 저장됩니다.
일반적으로 버퍼가 가득 찼을 때 디스크를 플러시하므로 각 트랜잭션에 따른 디스크 입출력 작업이 훨씬 적고 따라서 인스턴스 실행 속도가 빠릅니다. 그러나 트랜잭션 정보가 공유 메로리에 보관되기 때문에 중대한 인스턴스 오류가 발생했을 때 미처 로그 버스의 내용을 디스크로 플러시하지 못했을 수가 있으므로 문제가 생길수 있습니다. 즉 인스턴스 고유 메모리가 다른 작업에서 사용할 수 있도록 해제 되면 디스크에 기록되지 않은 트랜잭션 정보가 손실된다는 것입니다.
두 로깅모드 모두 DDL문을 로깅 처리하며, select구문을 제외한 모든 DML문(예: insert, update, delect명령)이 로깅됩니다. Select 구문중에서는 "select into temp”구문만 로깅됩니다. “select into temp”문을 로깅할 때 응용프로그램이나 질의에서 많은 양의 자료 부집합을 생성한 다음 삭제하면 오류가 발생할 수 있습니다. 이러한 오류를 방지하려면 “with no log”키워드를 사용하며 임시 DB영역에 임시 테이블을 만들어야 합니다.
|