본문 바로가기

오라클81

CH2. 트랜잭션과 LOCK - 05.오라클 Lock 오라클은 공유 리소스와 사용자 데이터를 보호할 목적으로 다양한 종류의 Lock을 사용합니다. 앞서 래치와 버퍼 Lock에 대해서는 1장에서 다루었습니다. 래치 : SGA에 공유돼 있는 갖가지 자료구조를 보호할 목적으로 사용하는 가벼운 Lock 버퍼 Lock : 버퍼 블록에 대한 액세스를 직렬화 라이브러리 캐시 Lock과 Pin은 라이브러리 캐시에 공유된 오브젝트 정의,커서, PL/SQL 프로그램 같은 실행가능 오브젝트에 대한 정의 및 실행계획을 보호하는 Lock입니다. 라이브러리 캐시 Lock : 라이브러리 캐시 오브젝트에 대한 핸들을 보호 라이브러리 캐시 Pin : 라이브러리 캐시 오브젝트의 실제 내용이 담긴 힙(heap)을 보호 DML Lock은 다중 사용자에 의해 동시에 액세스되는 사용자 데이터의 .. 2019. 12. 29.
CH2. 트랜잭션과 LOCK - 03. 비관적 vs. 낙관적 동시성 제어, 04.동시성 구현 사례 03. 비관적 vs. 낙관적 동시성 제어n-Tier 구조가 지배적인 요즘 같은 개발 환경에서는 트랜잭션 고립화 수준을 변경하는 DBMS 기능을 사용할 수 없는 경우가 있습니다. 동시성 제어는 비관적 동시성 제어와 낙관적 동시성 제어로 나뉩니다. 비관적 동시성 제어는 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정합니다. 따라서 한 사용자가 데이터를 읽는 시점에 Lock을 걸고 조회 또는 갱신처리가 완료될 때까지 이를 유지합니다. Locking은 첫 번째 사용자가 트랜잭션을 완료하기 전까지 다른 사용자들이 그 데이터를 수정할 수 없게 만들기 때문에 비관적 동시성 제어를 잘못 사용하면 동시성을 저해 받게 됩니다. 낙관적 동시성 제어는 사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정합니다. .. 2019. 12. 28.
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.