<오라클 성능 고도화 원리와 해법1> Ch03-01 Explain plan
오라클 성능 고도화 원리와 해법1 - Ch03-01 Explain plan SQL을 수행하기 전에 실행 계획을 확인하고자 할 때, explain plan 명령을 사용한다. 이 명령어를 사용하려면 먼저 plan_table을 생성해야 하는데, 아래 스크립트를 실행하면 된다. 참고로, ?는 $ORACLE_HOME 디렉토리를 대체하는 기호다. SQL>...
오라클 성능 고도화 원리와 해법1 - Ch03-01 Explain plan SQL을 수행하기 전에 실행 계획을 확인하고자 할 때, explain plan 명령을 사용한다. 이 명령어를 사용하려면 먼저 plan_table을 생성해야 하는데, 아래 스크립트를 실행하면 된다. 참고로, ?는 $ORACLE_HOME 디렉토리를 대체하는 기호다. SQL>...
오라클 성능 고도화 원리와 해법1 - Ch03 오라클 성능 관리 - 도입 프로젝트에 참여할 때마다 기본적인 튜닝 교육을 실시해 보지만, 교육에 열의를 보이던 개발자조차도 실제 성능 문제에 맞닥뜨렸을 때 스스로 문제를 해결하지 못하는 경우가 대부분이다. 교육 내용이 실질적인 성과로 연결되지 못하는 이유를 따져 보니, 튜닝 절차와 방법론에 대한 언급 없...
오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 05 오라클 Lock 오라클은 공유 리소스와 사용자 데이터를 보호할 목적으로 DML Lock, DDL Lock, 래치(Latch), 버퍼 Lock, 라이브러리 캐시 Lock/Pin 등 다양한 종류의 Lock을 사용한다. 여기에는 내부적으로 더 많은 종류의 Lock이 존재한다. 이...
오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 04 동시성 구현 사례 지금까지 동시성 제어의 개념과 기본적인 구현 패턴을 살펴봤고, 이들 개념을 실제 프로젝트에 적용해서 효과적으로 동시성 문제를 해결했던 사례를 2가지만 소개하고자 한다. (1) 일련번호 채번 동시성 높이기 첫 번째는 Locking을 최소화하면서 채번 테이블...
오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 03 비관적 vs. 낙관적 동시성 제어 동시성 제어를 위해, 앞에서 설명한 트랜잭션 고립화 수준을 변경하는 DBMS 기능을 사용할 수 없는 경우가 있다. 특히, n-Tier 구조가 지배적인 요즘 같은 개발 환경에서 더욱 그렇고, 그럴 때는 트랜잭션의 동시성 제어를 개발자가 직접 구...
오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 02 트랜잭션 수준 읽기 일관성 (1) 트랜잭션 수준 읽기 일관성이란? 문장 수준 읽기 일관성(Statement-Level Read Consistency)은 쿼리가 시작된 시점을 기준으로 데이터를 일관성 있게 읽어들이는 것을 말하며, 앞장에서 충분히 설명하였다. 트랜잭션 수준 읽...
오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 01 트랜잭션 동시성 제어 (1) 동시성 제어 오랜 기간 시스템을 운영하다 보면 데이터 구조가 점점 복잡해지고 데이터 정합성도 많이 흐트러져 새로운 업무 요건에 빠르게 대응할 수 없는 상황에 직면하게 된다. 결국, 엄청난 예산을 들여 신 시스템 구축에 착수하게 되고 대규모 인력이...
오라클 성능 고도화 원리와 해법1 - Ch02 트랜잭션과 Lock - 도입 1장에서 아키텍처를 설명하면서 오라클만의 독특한 읽기 일관성 모델을 비교적 자세히 설명했다. DB2, SQL Server, Sybase 등은 Lock을 통해 읽기 일관성을 구현하지만, 오라클은 Undo 데이터를 이용해 읽기 일관성을 구현한다는 게 핵심이다. 즉, Undo에 저...
오라클 성능 고도화 원리와 해법1 Ch01 오라클 아키텍처 - 11 Shared Pool 이제 SGA의 가장 중요한 구성 요소 중 하나인 Shared Pool에 대해 간단히 살펴보자. (간단히 설명하는 이유는 중요성이 떨어지기 때문이 아니라 너무 중요한 내용이어서 뒤에서 더 자세히 다루려는 것이다.) (1) 딕셔너리 캐시 Shared Pool은 ...
오라클 성능 고도화 원리와 해법1 Ch01 오라클 아키텍처 - 10 대기 이벤트 (1) 대기이벤트란? 우리 사회는 매우 분업화된 조직 사회다. 분업해서 일을 진행하다 보면 내가 계속 일을 진행하기 위해선 다른 사람이 일을 마치기를 기다려야만 할 때가 많다. 만약 앞 사람의 작업이 오래 걸릴 것 같으면 눈빠지게 기다리는 것보다 잠시 잠을 청하는 게 ...