스터디72 CH2. 트랜잭션과 LOCK - 01.트랜잭션 동시성 제어, 02.트랜잭션 수준 읽기 일관성 01. 트랜잭션 동시성 제어 (1) 동시성 제어 예전에는 주로 상담원을 통해 온라인 주문을 받았고, 시스템 사용법을 교육받은 숙련된 사용자에 의해 데이터 조작이 이루어졌습니다. 요즘에는 사용자가 직접 자신의 주문을 처리하는 환경이 되었고 생각지 못했던 일들이 훨씬 자주 발생하게 됩니다. 동시 접속자 수도 이전과 비교할 수 없을 정도로 많아졌기 때문에 동시성에 대한 이슈는 훨씬 더 중요해졌습니다. 동시성 제어(concurrency control)이란 동시에 실행되는 트랜잭션 수를 최대화하면서도 입력, 수정,삭제,검색 시 데이터의 무결성이 유지될 수 있도록 노력하는 것을 말합니다. 여러 개 트랜잭션이 동시에 수행될 때, 데이터베이스 애플리케이션은 이들 트랜잭션이 서로 간섭을 일으키는 현상을 최소화하면서 데이.. 2019. 12. 25. CH1.오라클 아키텍처 - 10.대기 이벤트, 11. Shared Pool 10. 대기이벤트(1) 대기이벤트란? 오라클 인스턴드로 조직화된 분업사회처럼 많은 프로세스(또는 쓰레드)들이 역할을 분담해서 각자 맡은 바 임무를 수행합니다. 함께 일을 하는 동안 프로세스 간 커뮤니케이션과 상호작용이 필요하고 떄로는 다른 프로세스가 일을 마칠때까지 기다려야하는 상황이 발생되기도 합니다. 그러면 오라클 프로세스는 일을 계속 진행할 수 있는 조건이 충족될 때까지 수면상태에 빠지는데 이것을 대기이벤트라고 합니다. 그때마다 오라클은 그 상태정보를 파일 또는 SGA메모리 내에 저장해둡니다. 처음 7.0버전에서 100여개 남짓하던것이 11g에는 960개가 넘는 대기이벤트가 정의되어 있습니다. (2) 대기 이벤트는 언제 발생할까요? 크게 세가지로 요약할 수 있습니다. 1. 자신이 필요로 하는 특정 .. 2019. 12. 22. CH1.오라클 아키텍처 - 8.블록 클린아웃, 9.Snapshot too old 8.블록 클린아웃블록 클린아웃은 트랜잭션에 의해 설정된 로우 lock을 해제하고 블록 헤더에 커밋정보를 기록하는 오퍼레이션입니다. 오라클에 로우 단위 lock은 레코드의 속성 (lock byte)로 관리되며 이는 로우 헤더로부터 블록 헤더에 있는 ITL 엔트리를 가리키는 포인터입니다. 사용자가 트랜잭션을 커밋하면 블록 클린아웃까지 완료해야 완전한 커밋이라고 할 수있는데, 일일이 블록을 찾아다니며 클린아웃을 수행하려면 시간이 오래 걸릴수 밖에 없습니다. 그래서 대량의 갱신 작업이 있고 나서는 커밋정보를 트랜잭션 테이블에만 기록하고 빠르게 커밋을 끝내버립니다. 그렇다면 언제 블록을 클린아웃 할까요? 나중에 해당 블록이 처음 액세스되는 시점입니다. 항상 이방식으로 작동하는 것은 아니며 delayed 블록 클린.. 2019. 12. 21. CH1.오라클 아키텍처 - 6.문장수준 읽기 일관성 7.Consistent vs. Current 모드 읽기 6.문장수준 읽기 일관성 SQL문이 수행되는 도중에 다른 트랜잭션에 의해 데이터가 변경,추가,삭제가 된다면 일관성 없는 결과집합을 리턴하거나 값을 잘못갱신하는 문제가 발생할 수 있습니다. 이런 문제를 방지하기 위해 사용하는 ‘문장 읽기 일관성’에 대해서 살펴보겠습니다. (1)문장수준 읽기 일관성이란? 단일 SQL문이 수행되는 도중에 다른 트랜잭션에 의해 데이터의 추가, 변경, 삭제가 발생하더라도 일관성 있는 결과집합을 리턴하는 것을 말합니다. 오라클을 제외한 다른 DBMS는 로우 lock을 사용해 dirty read를 방지합니다. 읽기 작업에 대해서는 shared lock을 사용하여 exclusive lock이 걸린 로우를 읽지 못하도록 합니다. 하지만 이것만으로는 문장수준의 읽기 일관성이 완벽하게 보장.. 2019. 12. 20. 이전 1 ··· 14 15 16 17 18 다음