Refigo Blog

<오라클 성능 고도화 원리와 해법1> Ch02-04 동시성 구현 사례

오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 04 동시성 구현 사례 지금까지 동시성 제어의 개념과 기본적인 구현 패턴을 살펴봤고, 이들 개념을 실제 프로젝트에 적용해서 효과적으로 동시성 문제를 해결했던 사례를 2가지만 소개하고자 한다. (1) 일련번호 채번 동시성 높이기 첫 번째는 Locking을 최소화하면서 채번 테이블...

<오라클 성능 고도화 원리와 해법1> Ch02-03 비관적 vs. 낙관적 동시성 제어

오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 03 비관적 vs. 낙관적 동시성 제어 동시성 제어를 위해, 앞에서 설명한 트랜잭션 고립화 수준을 변경하는 DBMS 기능을 사용할 수 없는 경우가 있다. 특히, n-Tier 구조가 지배적인 요즘 같은 개발 환경에서 더욱 그렇고, 그럴 때는 트랜잭션의 동시성 제어를 개발자가 직접 구...

<오라클 성능 고도화 원리와 해법1> Ch02-02 트랜잭션 수준 읽기 일관성

오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 02 트랜잭션 수준 읽기 일관성 (1) 트랜잭션 수준 읽기 일관성이란? 문장 수준 읽기 일관성(Statement-Level Read Consistency)은 쿼리가 시작된 시점을 기준으로 데이터를 일관성 있게 읽어들이는 것을 말하며, 앞장에서 충분히 설명하였다. 트랜잭션 수준 읽...

<오라클 성능 고도화 원리와 해법1> Ch02-01 트랜잭션 동시성 제어

오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 01 트랜잭션 동시성 제어 (1) 동시성 제어 오랜 기간 시스템을 운영하다 보면 데이터 구조가 점점 복잡해지고 데이터 정합성도 많이 흐트러져 새로운 업무 요건에 빠르게 대응할 수 없는 상황에 직면하게 된다. 결국, 엄청난 예산을 들여 신 시스템 구축에 착수하게 되고 대규모 인력이...

<오라클 성능 고도화 원리와 해법1> Ch02 트랜잭션과 Lock - 도입

오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 도입 1장에서 아키텍처를 설명하면서 오라클만의 독특한 읽기 일관성 모델을 비교적 자세히 설명했다. DB2, SQL Server, Sybase 등은 Lock을 통해 읽기 일관성을 구현하지만, 오라클은 Undo 데이터를 이용해 읽기 일관성을 구현한다는 게 핵심이다. 즉, Undo에 저...

<오라클 성능 고도화 원리와 해법1> Ch01-11 Shared Pool

오라클 성능 고도화 원리와 해법1 Ch01 오라클 아키텍처 - 11 Shared Pool 이제 SGA의 가장 중요한 구성 요소 중 하나인 Shared Pool에 대해 간단히 살펴보자. (간단히 설명하는 이유는 중요성이 떨어지기 때문이 아니라 너무 중요한 내용이어서 뒤에서 더 자세히 다루려는 것이다.) (1) 딕셔너리 캐시 Shared Pool은 ...

<오라클 성능 고도화 원리와 해법1> Ch01-10 대기 이벤트

오라클 성능 고도화 원리와 해법1 Ch01 오라클 아키텍처 - 10 대기 이벤트 (1) 대기이벤트란? 우리 사회는 매우 분업화된 조직 사회다. 분업해서 일을 진행하다 보면 내가 계속 일을 진행하기 위해선 다른 사람이 일을 마치기를 기다려야만 할 때가 많다. 만약 앞 사람의 작업이 오래 걸릴 것 같으면 눈빠지게 기다리는 것보다 잠시 잠을 청하는 게 ...

<오라클 성능 고도화 원리와 해법1> Ch01-08 블록 클린아웃

오라클 성능 고도화 원리와 해법1 - Ch01 오라클 아키텍처 - 08 블록 클린아웃 블록 클린아웃(Block Cleanout)은 트랜잭션에 의해 설정된 로우 Lock을 해제하고 블록 헤더에 커밋 정보를 기록하는 오퍼레이션이다. 오라클에서 로우 단위 Lock은 레코드의 속성(Lock Byte)으로 관리되며, 이는 로우 헤더로부터 블록 헤더에 있는 I...