이펙티브 오라클 (2009년)
이것은 데이터베이스이지, 데이터더미가 아니다 0 0 44,498

by 구루비스터디 참조무결성 [2018.05.26]


4.1 기본 키와 외래 키를 사용하라


외래 키와 데이터베이스 유효성을 검사해야하는 이유
  • (1) 이 애플리케이션 이외에 이 데이터르 액세스할 애플리케이션은 영원히 없는가?
  • (2) 클라이언트에서 얼마나 신속하게 이 처리를 수행할 수 있겠는가?
  • (3) 키를 없애라고 권고하는 컨설턴트는 코드의 줄 수에 따라 월급을 받는가?


4.2 참조 무결성의 오버헤드를 테스트하라


실습5_1(실습 준비)

create table cities
as
select username city
  from all_users
 where rownum <=37;

alter table cities
  add constraint
    cities_pk primary key(city);

create table with_ri
(x char(80),
city references cities
);

create table without_ri
(x char(80),
city varchar2(30)
);



실습5_1 (참조 무결성의 이용에 따른 성능 비용 테스트)

analyze table cities compute statistics;
analyze table with_ri compute statistics;
analyze table without_ri compute statistics;
alter session set timed_statistics=true;
alter session set sql_trace=true;
alter session set events '10046 trace name context forever, level 12';

declare
   type array is table of varchar2(30) index by binary_integer;
   l_data array;
 begin
   select * BULK COLLECT into l_data from cities;
   for i in 1 .. 1000
   loop
     for j in 1 .. l_data.count
     loop
        insert into with_ri values ('x', l_data(j));
        insert into without_ri values ('x', l_data(j));
     end loop;
   end loop;
 end;
/

exit

TKPROF C:\oracle\admin\ora9\udump\ora9_ora_652.trc ora9.trc SORT =(EXECPU) EXPLAIN = sys/sys


  • TKPROF 사용 부분은 오라클 클럽의 (01.대용량 데이터베이스 스터디) > (대용량 데이터베이스 솔루션 1) > (2.SQL_TRACE,3.TKPROF(trace파일출력)) 문서를 참조했습니다.



  • 프로시저의 실행으로 생긴 TKPROF 보고서


  • 데이터베이스에 참조 무결성을 추가하면 전체적으로 10%~15% 정도의 오버헤드가 발생한다.
  • 그러나 이정도의 오버헤드는 데이터 무결성 보장과 애플리케이션의 빠른 개발을 위해 충분히 감내할만 하다.


4.3 중간 계층의 검사가 만병 통치약은 아니다

4.3.1 속도는 빠른가?

  • 중간 계층에서 작성한 로더가 원시 직접 경로 적재(native direct path load)보다 빠를까?


4.3.2 융통성은 좋아지는가?

  • 데이터베이스 바깥에서 제약 조건을 검사한다면 작성해야 할 코드의 양이 증가하게 된다.


4.3.3 데이터베이스는 독립적인가?

  • 대상 애플리케이션이 트랜잭션 시스템일 경우 동시성 제어와 데이터 일관성에 관한 이슈가 존재할 것이다.


4.3.4 보안은 우수한가?


감사하는 데 데이터베이스를 사용할 경우의 이점
  • (1)DBA의 악의적인 행위를 탐지할 수 있다.
  • (2)DBA의 감사 기능 해제 행위를 감지할 수 있다.
  • (3)DBA의 감사 추적 기능 마비 행위르 감지할 수 있다.
"구루비 데이터베이스 스터디모임" 에서 2009년에 "이펙티브 오라클" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3449

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입