Oracle튜닝 어프로치
오픈 시스템에서 많이 사용되는 「Oracle」에 대해 동작 특징 및 튜닝 포인트를 소개합니다.
◆Oracle성능 현상
◎신 시스템 가동후 Oracle이 고부하인 점에 놀라는 고객이 많다.
◎조사해 보면 대량 CPU시간을 Oracle이 사용하고 있다.
◎CPU사용 시간과 일관성 읽기 횟수(컨시스턴트GET)가 높은 상관이 있다.
◆데이터베이스 구조
세그먼트 단위로 관리되고 이하 4종류가 준비되어 있다.
데이터 세그먼트 : 데이터베이스 데이터 유지
인덱스 세그먼트 : 데이터 세그먼트 액세스 고속화를 위한 인덱스 정보 기록
임시 세그먼트 : SQL처리에 필요한 워크역 제공
롤백 세그먼트(RBS) : 데이터베이스 갱신전 정보를 기억하고 롤백 처리와 일관성 읽기 처리에 사용
◆optimizer
목적 블록의 고속 액세스를 위해 처리 SQL에 연산식을 간소화 하는 등 최적화하는 optimizer 기능이 준비되어 있다. 또 optimizer 최적화 logic은 이하 룰 베이스와 코스트 베이스 2가지가 준비되어 있다.
룰 베이스 : 경험칙에 의해 가장 효율적인 access path가 선택된다. 유의점으로 장래는 룰 베이스는 지원되지 않을 가능성이 있다.
코스트 베이스:ANALYZE코맨드로 데이터베이스 내용을 검사하여 통계 데이터가 작성된다. 이 통계 데이터를 기초로 최적 access path가 결정된다. 유의점으로 갱신 빈도가 높은 데이터베이스의 통계 데이터는 빈번하게 갱신될 필요가 있다.
◆일관성 읽기와 RBS(롤백 세그먼트)
일관성 읽기:읽기 개시때 데이터베이스 이미지 처리를 보증하는 기능으로, 예를 들면 오전9 시 백업 처리 개시 경우 9시시점의 데이터베이스 정보를 읽는 것이 가능한것으로, 갱신전 이미지는 RBS로부터 정보를 얻는다. 이 때 운나쁘게 RBS내에 갱신전 이미지가 발견되지 않으면 ORA-1555에러가 발생한다. 또 유의점으로 일관성 읽기 횟수(컨시스턴트GET횟수)와 CPU사용율은 높은 상관이 있고 CPU사용율을 높이는 요인이 되고 있다.
RBS(롤백 세그먼트):앞의 일관성 읽기나 롤백 처리(데이터베이스 갱신 후 그 갱신의 무효 처리)를 원활히 하기 위해 RBS가 준비되어 있다. 데이터베이스 갱신이 완료될때까지 그 갱신 블럭의 갱신전 이미지는 RBS에 기록되고 RBS 기록은 순환 방식으로 되고 있다. 또 RBS는 필요에 따라 자동적으로 extent수를 조정하는 기능을 가지고 있으나 최대 extent수를 설정하는 MAXEXTENTS를 넘는 경우 ORA-1555에러가 발생한다.
◆튜닝 포인트
Oracle 성능을 크게 좌우하는 것이 데이터 버퍼 크기로서 각종 버퍼가 효율적으로 사용되고 있는가? 또 용량 부족은 아닌가를 확인할 필요가 있다.
optimize 처리는 룰 베이스로 하는가? 코스트 베이스로 하는가를 결정한다.
일관성 읽기(컨시스턴트GET)는 CPU를 대량 사용한다.
ORA-1555에러 발생은 처리 시간과 시스템 자원 낭비뿐 아니라 롤백 정보에 기록 하는 트랜잭션의 이상 종료를 초래하고 성능을 저하시킨다.
이 때문에 ORA-1555에러 발생이 RBS용량 부족때문 인가, RBS내 갱신전 이미지 부재때문인가를 조기에 구분하는 것이 중요하다.
여러SQL처리에서 하나의 RBS를 액세스하면 성능을 악화시킨다.
|