• 애플리케이션의 성능을 평가한다.
  • 수정된 부분이 실제로, 개선되어 작동하는지 확인.
  • 개발환경에서 작업한 업그레이드 스크립트가 올바르게 동작하는지 확인.
  • 패치 업그레이드, 릴리즈, 운영체제 패치 등 작업.


대표데이터로 테스트하라

  • 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;






단일사용자 환경에서 테스트하지 말라

  • 실제상황에서 많은 세션이 동시에 데이터를 액세스하는 어느정도 부하가 있는 환경에서 애플리케이션을 테스트하라.


먼지가 없는 연구실에서 테스트하지 말라

  • 테스트환경은 철저히 실제 환경을 반영해야 한다.