- 애플리케이션의 성능을 평가한다.
- 수정된 부분이 실제로, 개선되어 작동하는지 확인.
- 개발환경에서 작업한 업그레이드 스크립트가 올바르게 동작하는지 확인.
- 패치 업그레이드, 릴리즈, 운영체제 패치 등 작업.
대표데이터로 테스트하라
- 100만개의 행이 있는 프러덕션이라면 실제 100만개의 행으로 테스트하라.
- 프러덕션의 통계정보를 테스트 시스템에 적용해서 테스트하기도 함.
데이터 서브세팅의 사용을 고려해 보자
- 각 테이블의 한두 파티션만을 적재하여 테스트할 수도 있다.
최적화기가 시간에 따라 쿼리 계획을 바꿀 수 있다는 사실을 알아야 한다
- 대표데이터를 사용한다고 해서 반드시 프로덕션과 테스트시스템의 쿼리 계획이 동일하지는 않다.
- 물리적인 여러가지 상황을 고려하여 쿼리 계획을 만든다.
테스트 준비
create table clustered ( x int, data char(255));
insert /* append */
into clustered ( x, data)
select rownum, dbms_random.random
from all_objects;
alter table clustered
add constraint clustered_pk primary key (x);
analyze table clustered compute statistics;
create table non_clustered ( x int, data char(255));
insert /* append */
into non_clustered ( x, data)
select x, data
from clustered
order by data;
alter table non_clustered
add constraint non_clustered_pk primary key (x);
analyze table non_clustered compute statistics;
select index_name, clustering_factor
from user_indexes
where index_name like '%CLUSTERED_PK';
show parameter optimizer_index
set autotrace traceonly explain
select * from clustered where x between 50 and 2750;
select * from non_clustered where x between 50 and 2750;
단일사용자 환경에서 테스트하지 말라
- 실제상황에서 많은 세션이 동시에 데이터를 액세스하는 어느정도 부하가 있는 환경에서 애플리케이션을 테스트하라.
먼지가 없는 연구실에서 테스트하지 말라
- 테스트환경은 철저히 실제 환경을 반영해야 한다.