Oracle SQL 성능 최적화 시리즈 학습 1

3486 단어 OrraacclleeS
보고 있 는 ORACLE 튜 토리 얼 은 Oracle SQL 성능 최적화 시리즈 학습 1 입 니 다.1. 적합 한 ORACLE 최적화 기 선택  ORACLE 의 유 틸 리 티 는 모두 3 가지 가 있 습 니 다.  a. RULE (규칙 에 기초 하 다 b. COST (원가 에 기초 하 다 c. CHOOSE (선택적으로  결 성 된 유 틸 리 티 를 설정 합 니 다.init.ora 파일 에서 OPTIMIZERMODE 매개 변수의 각종 성명,예 를 들 어 RULE,COST,CHOOSE,ALLROWS,FIRST_ROWS . 물론 SQL 문장 급 이나 세 션(session)급 에서 덮어 씁 니 다.  원가 기반 최적화 기(CBO, Cost-Based Optimizer) , 분석 을 자주 실행 해 야 합 니 다. 데이터베이스 에 있 는 대상 통계 정보 추가(object)명령 statistics)의 정확성.  데이터베이스 의 유 틸 리 티 모드 가 선택 적(CHOOSE)으로 설정 되면 실제 유 틸 리 티 모드 는 analysis 명령 을 실행 한 적 이 있 는 지 여부 와 관련 이 있 습 니 다. 만약 table 이 분석 되 었 다 면, 유 틸 리 티 모드 는 자동 으로 CBO 가 됩 니 다. , 반대로 데이터 베 이 스 는 RULE 형식의 최적화 기 를 사용 할 것 이다.  부족 한 상황 에서 ORACLE 는 CHOOSE 최적화 기 를 사용 합 니 다. 불필요 한 전체 스 캔 을 피하 기 위해 서(full table scan) , 너 는 가능 한 한 CHOOSE 최적화 기 를 사용 하 는 것 을 피해 야 하 며,규칙 에 기초 하거나 원가 에 기초 한 최적화 기 를 직접 사용 해 야 한다.  2. Table 접근 방식  ORACLE 두 가지 방문 표 에 기록 하 는 방식 을 사용 합 니 다.  a. 전체 표 스 캔  전체 표 스 캔 은 표 의 모든 기록 에 순서대로 접근 하 는 것 이다. ORACLE 는 한 번 에 여러 개의 데이터 블록(database)을 읽 습 니 다. block)의 방식 은 전체 표 스 캔 을 최적화 합 니 다.  b. ROWID 접근 표 통과 하기  ROWID 기반 접근 방식 을 사용 하여 방문 표 의 효율 을 높 일 수 있 습 니 다. , ROWID 는 표 에 기 록 된 물리 적 위치 정 보 를 포함 하고 있 습 니 다.ORACLE 은 색인(INDEX)을 사용 하여 데이터 와 데 이 터 를 저장 하 는 물리 적 위치(ROWID)간 의 관 계 를 실현 합 니 다. 보통 색인 은 ROWID 에 빠르게 접근 하 는 방법 을 제공 하기 때문에 색인 열 을 기반 으로 하 는 검색 은 성능 을 향상 시 킬 수 있다.  3. 공유 SQL 구문  같은 SQL 문 구 를 반복 적 으로 해석 하지 않 기 위해 첫 번 째 해석 후, ORACLE 는 SQL 문 구 를 메모리 에 저장 합 니 다.이 문 구 는 시스템 전역 SGA(system)에 있 습 니 다. global area)의 공유 풀(shared) buffer pool)의 메모 리 는 모든 데이터베이스 사용자 가 공유 할 수 있 습 니 다. 따라서 SQL 문 구 를 실행 할 때(때로는 커서 라 고도 함) 이전에 실 행 된 문구 와 완전히 같다. ORACLE 는 이미 해 석 된 문장 과 가장 좋 은 실행 경 로 를 빠르게 얻 을 수 있 습 니 다. ORACLE 의 이 기능 은 SQL 의 실행 성능 을 크게 향상 시 키 고 메모리 의 사용 을 절약 했다.  안 타 깝 게 도 ORACLE 는 간단 한 시계 에 만 고속 버퍼(cache)를 제공 합 니 다. buffering) ,이 기능 은 다 중 표 연결 조회 에 적용 되 지 않 습 니 다.  데이터베이스 관리 자 는 init.ora 에서 이 지역 에 적합 한 인 자 를 설정 해 야 합 니 다.이 메모리 영역 이 클 수록 더 많은 문 구 를 유지 할 수 있 습 니 다.물론 공 유 될 가능성 도 큽 니 다.  당신 이 ORACLE 에 게 SQL 문 구 를 제출 하면 ORACLE 는 먼저 이 메모리 에서 같은 문 구 를 찾 습 니 다.  여기 서 밝 혀 야 할 것 은 ORACLE 가 이들 에 대해 엄격 한 매 칭 을 취 하 는 것 이다.공 유 를 달성 하려 면 SQL 문 구 는 반드시 똑 같 아야 한다(빈 칸,줄 바 꾸 기 등 포함).  공 유 된 문 구 는 세 가지 조건 을 만족 시 켜 야 합 니 다.  A. 문자 비교:  현재 실 행 된 문장 과 공유 탱크 의 문장 은 완전히 같 아야 합 니 다.  예 를 들 면:  SELECT * FROM EMP;  아래 와 각각 다르다  SELECT * from EMP;  Select * From Emp;  SELECT * FROM EMP;  B. 두 문장 이 가리 키 는 대상 은 반드시 완전히 같 아야 한다.  예 를 들 면:  사용자 대상 어떻게 방문 합 니까?  Jack sal_limit private synonym  Work_city public synonym  Plant_detail public synonym  Jill sal_limit private synonym  Work_city public synonym  Plant_detail table owner  다음 SQL 문 구 를 이 두 사용자 사이 에서 공유 할 수 있 는 지 고려 해 보 세 요.  SQL 공유 가능 여부,이유  select max(sal_cap) from sal_limit;  안 돼.사용자 마다 private 가 있 습 니 다. synonym - sal_limit , 그것들 은 다른 대상 이다.  select count(*0 from work_city where sdesc like 'NEW%';  네.두 사용자 가 같은 대상 Public 에 접근 합 니 다. synonym - work_city  select a.sdesc,b.location from work_city a , plant_detail b where a.city_id = b.city_id  안 돼.사용자 잭 private 를 통 해 synonym plant 방문detail 그러나 표 의 소유자 입 니 다.대상 이 다 릅 니 다.  C. 두 SQL 문 구 는 같은 이름 의 바 인 딩 변 수 를 사용 해 야 합 니 다(bid). variables)  예 를 들 면:  첫 번 째 그룹의 두 SQL 문 구 는 같 습 니 다(공유 가능).두 번 째 그룹의 두 문 구 는 다 릅 니 다(실행 할 때 도 서로 다른 바 인 딩 변수 와 같은 값 을 부여 합 니 다).
[NextPage]   a.  select pin , name from people where pin = :blk1.pin;  select pin , name from people where pin = :blk1.pin;  b.  select pin , name from people where pin = :blk1.ot_ind;  select pin , name from people where pin = :blk1.ov_ind;  
 이전 페이지

좋은 웹페이지 즐겨찾기