Q & A

Re: 트랜잭션과 로그파일 세션과의 관계

Date2004.08.16 / Hit : 10088
트랜잭션과 로그파일 세션과의 관계
안녕하세요 트랜잭션은 ACID의 특성을 갖는 하나의 실행 단위입니다. 하나의 트랜잭션은 명시적 Commit/Rollback 혹은 DLL 명령으로 종료되며 다시 새로운 트랜잭션이 시작됩니다. 그렇지만 오라클의 v$transaction에서 보여지는 트랜잭션은 현재 Insert, Update, Delete 등과 같은 DML이 수행된 경우에만 보여지게 됩니다. 질문에서 처럼 1건을 Insert하고 Commit을 하면 이것이 하나의 트랜잭션이 되고 새로운 트랜잭션이 시작며, 1000건 Delete하고 Commit을 하면 이것은 또 다른 트랜잭션이 되고 다시 새로운 트랜잭션이 시작 됩니다. 그렇지만 Commit 이후에 Select와 같은 Qeury만을 수행했다면 이것은 v$transaction에는 나타나지 않습니다. ---------------------------------------------------- v$session에는 active session이 10개뿐인데 v$transaction에는 40개나 active transaction이 존재한다는 것은 v$session과 v$transaction에서 바라보는 active라는 개념의 차이 입니다. v$session에서 active session이라는 것은 검색 시점에서 현재 어떤 종류의 질의(DML, DDL, Select 등)라도 수행 중에 있으면 active라고 이야기 합니다. 그렇지만 v$transaction에서는 하나의 session에서 적어도 하나의 DML이 수행되면 이것을 active transaction이라고 이야기 합니다. 그렇기 때문에 현재 active session은 10이더라도 active transaction 즉, 과거 DML이 수행되고 아직 Commit/Rollback이 수행되지 않은 session은 40개가 될 수 있습니다.

--------------------------------------------------------
- Graph&Report에서 트랜잭션의 갯수가 500000까지 올라갔다고 하는 것은 v$sysstat에서 추출된 누적 정보를 말하는 것입니다. 즉, 그 시점에 트랜잭션 갯수가 500000이 아니라 그때까지의 해당 시스템에서 트랜잭션이 500000개 있었다는 것입니다.

--------------------------------------------------------
- 트랜잭션 갯수와 Log의 양이 완전히 비례하지는 않습니다. 적은 트랜잭션 갯수라도 DML 작업 자체가 많으면 만들어내는 로그의 양은 훨씬 많을 수도 있습니다. 수고하세요

---------- Original Message ----------
이름 : 김유신 제목 : 트랜잭션과 로그파일 세션과의 관계 트랜잭션의 정확한 의미가 무엇인지 궁금합니다. 1건 insert 하고 commit하면 한개의 트랜잭션입니까. plsql에서 1000건 delete하고 commit해도 한개의 트랜잭션입니까? 그리고 transaction에서 보면... 10개의 active session밖에 없는데 transaction에서 active는 40개정도입니다. 한세션에서 여러 트랜잭션이 발생가능하나요? 또 이상한점이 트랜잭션 모니터에서 active인것을 찾아보니 session 모니터에서는 inactive입니다.. 당최 이해가 안가네요 graph report에서 transaction을 카운트가 급격히 500000정도 로 올라가는데 인스턴스 모니터링을하면 그시간에 특별히 세션이나 트랜잭션이 없는데... 설명부탁드리고 500000이 정확히 의미하는 수가 무엇인지요? 트랜잭션의 개수???? 마지막으로 OPS환경인데 1번 DB는 active 트랜잭션수가 많은데 2번 DB보다 archive log가 적게 나옵니다. 트랜잭션수가 많으면 log도 많아야 되는게 아닌가요?
  • 대표전화
    1660-1675

  • 기술 문의
    02-6931-1734

  • 오렌지 문의
    070-8666-8175

  • 라이선스 문의
    02-6931-1728