태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

[오라클 질문] rowid 와 direct path load 연관 질문입니다.

기술이야기/Ask 엑셈 2009. 12. 15. 13:29
2009-12-11 10:26:25 에 등록된 질문입니다. 김종훈 님께서 질문해 주셨습니다.


SQL> desc rowidtest
이름                        널?    유형
----------------------------------------- -------- ----------------------------
ROWIDCOL                            VARCHAR2(18)

 

SQL> SELECT * FROM ROWIDTEST;    <== 아래는 FULL SCAN한 결과로 ROWIDCOL에 ROWID에 있는 값들을 그대로 WHERE CURRENT 하게 넣었습니다.
 
ROWID            ROWIDCOL
================    ===================
AAANlCAAHAABKqkAAA  AAANlCAAHAABKqkAAA
AAANlCAAHAABKqkAAB  AAANlCAAHAABKqkAAB
AAANlCAAHAABKqkAAC  AAANlCAAHAABKqkAAC
AAANlCAAHAABKqkAAD  AAANlCAAHAABKqkAAD
AAANlCAAHAABKqkAAE  AAANlCAAHAABKqkAAE
AAANlCAAHAABKqkAAF  AAANlCAAHAABKqkAAF
AAANlCAAHAABKqkAAG  AAANlCAAHAABKqkAAG
AAANlCAAHAABKqkAAH  AAANlCAAHAABKqkAAH
AAANlCAAHAABKqkAAI  AAANlCAAHAABKqkAAI
AAANlCAAHAABKqkAAJ  AAANlCAAHAABKqkAAJ
AAANlCAAHAABKqkAAK  AAANlCAAHAABKqkAAK
AAANlCAAHAABKqkAAL  AAANlCAAHAABKqkAAL
AAANlCAAHAABKqkAAM  AAANlCAAHAABKqkAAM
AAANlCAAHAABKqkAAN  AAANlCAAHAABKqkAAN
AAANlCAAHAABKqkAAO  AAANlCAAHAABKqkAAO
AAANlCAAHAABKqkAAP  AAANlCAAHAABKqkAAP
AAANlCAAHAABKqkAAQ  AAANlCAAHAABKqkAAQ
AAANlCAAHAABKqkAAR  AAANlCAAHAABKqkAAR
AAANlCAAHAABKqkAAS  AAANlCAAHAABKqkAAS
AAANlCAAHAABKqkAAT  AAANlCAAHAABKqkAAT
AAANlCAAHAABKqkAAU  AAANlCAAHAABKqkAAU
AAANlCAAHAABKqkAAV  AAANlCAAHAABKqkAAV
AAANlCAAHAABKqkAAW  AAANlCAAHAABKqkAAW
AAANlCAAHAABKqkAAX  AAANlCAAHAABKqkAAX
AAANlCAAHAABKqkAAY  AAANlCAAHAABKqkAAY
AAANlCAAHAABKqkAAZ  AAANlCAAHAABKqkAAZ
AAANlCAAHAABKqkAAa  AAANlCAAHAABKqkAAa
AAANlCAAHAABKqkAAb  AAANlCAAHAABKqkAAb
AAANlCAAHAABKqkAAc  AAANlCAAHAABKqkAAc
AAANlCAAHAABKqkAAd  AAANlCAAHAABKqkAAd
AAANlCAAHAABKqkAAe  AAANlCAAHAABKqkAAe
AAANlCAAHAABKqkAAf  AAANlCAAHAABKqkAAf
AAANlCAAHAABKqkAAg  AAANlCAAHAABKqkAAg
AAANlCAAHAABKqkAAh  AAANlCAAHAABKqkAAh
AAANlCAAHAABKqkAAi  AAANlCAAHAABKqkAAi
AAANlCAAHAABKqkAAj  AAANlCAAHAABKqkAAj
AAANlCAAHAABKqkAAk  AAANlCAAHAABKqkAAk
AAANlCAAHAABKqkAAl  AAANlCAAHAABKqkAAl
AAANlCAAHAABKqkAAm  AAANlCAAHAABKqkAAm
AAANlCAAHAABKqkAAn  AAANlCAAHAABKqkAAn
AAANlCAAHAABKqkAAo  AAANlCAAHAABKqkAAo
AAANlCAAHAABKqkAAp  AAANlCAAHAABKqkAAp
AAANlCAAHAABKqkAAq  AAANlCAAHAABKqkAAq
AAANlCAAHAABKqkAAr  AAANlCAAHAABKqkAAr
AAANlCAAHAABKqkAAs  AAANlCAAHAABKqkAAs
AAANlCAAHAABKqkAAt  AAANlCAAHAABKqkAAt
AAANlCAAHAABKqkAAu  AAANlCAAHAABKqkAAu
AAANlCAAHAABKqkAAv  AAANlCAAHAABKqkAAv
AAANlCAAHAABKqkAAw  AAANlCAAHAABKqkAAw
AAANlCAAHAABKqkAAx  AAANlCAAHAABKqkAAx
AAANlCAAHAABKqkAAy  AAANlCAAHAABKqkAAy
AAANlCAAHAABKqkAAz  AAANlCAAHAABKqkAAz
AAANlCAAHAABKqkAA0  AAANlCAAHAABKqkAA0
AAANlCAAHAABKqkAA1  AAANlCAAHAABKqkAA1
AAANlCAAHAABKqkAA2  AAANlCAAHAABKqkAA2
AAANlCAAHAABKqkAA3  AAANlCAAHAABKqkAA3
AAANlCAAHAABKqkAA4  AAANlCAAHAABKqkAA4
AAANlCAAHAABKqkAA5  AAANlCAAHAABKqkAA5
AAANlCAAHAABKqkAA6  AAANlCAAHAABKqkAA6
AAANlCAAHAABKqkAA7  AAANlCAAHAABKqkAA7
AAANlCAAHAABKqkAA8  AAANlCAAHAABKqkAA8
AAANlCAAHAABKqkAA9  AAANlCAAHAABKqkAA9
AAANlCAAHAABKqkAA+  AAANlCAAHAABKqkAA+
AAANlCAAHAABKqkAA/  AAANlCAAHAABKqkAA/
AAANlCAAHAABKqkABA  AAANlCAAHAABKqkABA
AAANlCAAHAABKqkABB  AAANlCAAHAABKqkABB
AAANlCAAHAABKqkABC  AAANlCAAHAABKqkABC
AAANlCAAHAABKqkABD  AAANlCAAHAABKqkABD
AAANlCAAHAABKqkABE  AAANlCAAHAABKqkABE
AAANlCAAHAABKqkABF  AAANlCAAHAABKqkABF
AAANlCAAHAABKqkABG  AAANlCAAHAABKqkABG
AAANlCAAHAABKqkABH  AAANlCAAHAABKqkABH
AAANlCAAHAABKqkABI  AAANlCAAHAABKqkABI
AAANlCAAHAABKqkABJ  AAANlCAAHAABKqkABJ
AAANlCAAHAABKqkABK  AAANlCAAHAABKqkABK
AAANlCAAHAABKqkABL  AAANlCAAHAABKqkABL
AAANlCAAHAABKqkABM  AAANlCAAHAABKqkABM


SQL> CREATE INDEX SSCPOWN.IX_ROWIDTEST_COL ON SSCPOWN.ROWIDTEST
  (ROWIDCOL);

 

SQL> select min(rowid),max(rowid) from rowidtest;

MIN(ROWID)      MAX(ROWID)
------------------ ------------------
AAANlCAAHAABKqkAAA AAANlCAAHAABKqkABM


SQL> select min(rowidcol),max(rowidcol) from rowidtest;

MIN(ROWIDCOL)                MAX(ROWIDCOL)
------------------------------------ ------------------------------------
AAANlCAAHAABKqkAA+            AAANlCAAHAABKqkABM


근데 바로 위의 두 SQL의 MIN과 MAX를 보면 오라클이 리턴해주는게 다릅니다.
저는 두번째 처럼 min(rowidcol),max(rowidcol)이 리턴해주는 값은 이해가 가는데
첫번째 SQL의 min(rowid),max(rowid)의 리턴값은 이해가 안가네요.
이것을 어떻게 이해 해야 할까요?

 

그리고 데용량 데이타를 DIRECT LOAD PATH를 통해 HWM위로 로딩하고 나서
그 로딩된 데이타만을 삭제 하기를 원한다면
위의 경우 SQL을 어떻게 만들어 줘야 하는지요?


감사합니다.

A:                               엑셈 답변 보기
위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.

[오라클 질문] 히스토그램이 있는경우의 density 계산 방법

기술이야기/Ask 엑셈 2009. 12. 15. 13:20
2009-12-09 10:04:32 에 등록된 질문입니다. 유수익 님께서 질문해 주셨습니다.

Q:
히스토그램이 없으면 보통 density = 1/NDV 인데 히스토그램이 있을경우에는
어떤 공식으로 계산하나요?





A:                                        엑셈 답변 보기
위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.


[오라클 질문] append의 효능?

기술이야기/Ask 엑셈 2009. 12. 15. 13:17
2009-12-08 09:37:14 에 등록된 질문입니다.  포동28 님께서 질문해 주셨습니다.

Q:
테이블을 logging/nologging으로 만들고 select / insert / update /delete 시 nologging으로 실행시킬려고 합니다.
이때 테이블이 logging과 nologging 으로 만들어서 실행시키는게 얼마나 성능상의 차이가 있을지요?
가이드라인 같은게 있을까요?
그리고 delete 성능을 향상시키는 또 다른 방법이 있으면 말씀해주세요.





A:                          엑셈 답변 보기
위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.

[오라클 만화] Direct Path Write

[오라클 만화] Direct Path Write

[오라클 질문] CBO PLAN COST

기술이야기/Ask 엑셈 2009. 11. 24. 15:06
2009-11-20 11:51:24 에 등록된 질문입니다.  이루마 님께서 질문해 주셨습니다.

Q:
Oracle 9.2.0.8에서
TABLE, INDEX등 아무런 통계정보를 생성하지 않습니다.

HINT를 부여하여 CBO 로 EXPLAIN PLAN 을 보게되면,
아래와 같이 Rows, Bytes, Cost가 나타나게 되는데요,

Q1) 이때 Rows, Bytes는 어떻게 계산되어 나오는 값일까요?

Q2) 만일 동일 조건(데이터에변경없음, 통계정보없음)에서 Rows가 바뀐다면
어떤 변수에 의해 바뀔 수 있을까요?

----------------------------------------------------------------------------
| Id | Operation            | Name    | Rows | Bytes | Cost |
----------------------------------------------------------------------------
|  0 | SELECT STATEMENT        |        |  42 |  152K| 1853 |
|  1 | NESTED LOOPS          |        |  42 |  152K| 1853 |
|* 2 |  INDEX RANGE SCAN      | TEST1_IDX01 | 1851 | 49977 |  2 |
|* 3 |  TABLE ACCESS BY INDEX ROWID| TEST2    |  1 | 3681 |  1 |
|* 4 |  INDEX UNIQUE SCAN      | TEST2_PK  |  1 |    |    |
----------------------------------------------------------------------------

A:                       엑셈 답변 보기
위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.

[오라클 질문] SQL Trace 에서 pr, cr 값의 정확한 의미는 무엇인가요?

기술이야기/Ask 엑셈 2009. 11. 24. 14:57
2009-11-11 15:25:48 에 등록된 질문입니다. 권대욱 님께서 질문해 주셨습니다.

테이블을 생성하고 테스트 해 봤습니다.
다음과 같은 결과가 나왔는데 해석이 안되서요...

。테이블 생성

CREATE TABLE T ( C CHAR(1) );



。아무것도 넣지 않고 SELECT.

SELECT * FROM T;



- Trace 결과

Rows  Row Source Operation
------- ---------------------------------------------------
    0 STATEMENT
    0  TABLE ACCESS FULL T (cr=3 pr=1 pw=0 time=14026 us)

질문 1) pr 이 1 인데 왜 cr 은 3인가요?


。1 건을 넣고...

INSERT INTO T VALUES ( '1' );

COMMIT;



SELECT * FROM T;

- Trace 결과

Rows  Row Source Operation
------- ---------------------------------------------------
    0 STATEMENT
    1  TABLE ACCESS FULL T (cr=7 pr=6 pw=0 time=19133 us)

질문 2) 여기서는 pr 이 6이고 cr 은 7 이 돼었내요...
      왜 그렇죠?
질문 3) cr 은 정확히 메모리 어디에 있는 것을 어디로 읽어오는 건가요?


A:                     엑셈 답변 보기

[오라클 질문] not null 판단쿼리에서 bitmap인덱스 사용

기술이야기/Ask 엑셈 2009. 11. 24. 14:54
2009-11-12 08:19:16 에 등록된 질문입니다.  윤봉운 님께서 질문해 주셨습니다.


[오라클 질문] not null 판단쿼리에서 bitmap인덱스 사용
Q: 
not null 판단쿼리에서 bitmap인덱스를 사용할 경우 빠르게 처리가 될 수 있다고
해서 써 봤는데
오히려 full scan 보다 cost가 더 많이 걸리는 결과가 나왔습니다.
partition테이블은 아니구요.

---------------------------------------------------
#full scan의 경우

SELECT *
FROM BMSROUTENODECOMPO_YOON2
WHERE LINKSEQ IS NOT NULL


Plan
SELECT STATEMENT ALL_ROWSCost: 13,517 Bytes: 5,047,861 Cardinality: 42,419   
  1 TABLE ACCESS FULL TABLE OPTAGO4.BMSROUTENODECOMPO_YOON2 Cost: 13,517 Bytes: 5,047,861 Cardinality: 42,419


---------------------------------------------------
itmap인덱스를 생성해서 hint를 준경우

SELECT /*+ INDEX(BMSROUTENODECOMPO_YOON2 BIT_IDX_LINKSEQ) */ *
FROM BMSROUTENODECOMPO_YOON2
WHERE LINKSEQ IS NOT NULL


Plan
SELECT STATEMENT ALL_ROWSCost: 149,401 Bytes: 5,047,861 Cardinality: 42,419       
  3 TABLE ACCESS BY INDEX ROWID TABLE OPTAGO4.BMSROUTENODECOMPO_YOON2 Cost: 149,401 Bytes: 5,047,861 Cardinality: 42,419     
    2 BITMAP CONVERSION TO ROWIDS   
        1 BITMAP INDEX FULL SCAN INDEX (BITMAP) OPTAGO4.BIT_IDX_LINKSEQ








그래서
scott계정으로 테스트를 해보니 같은 결과 였습니다.

----------------------------------------------------------
select *
from emp
where comm is not null;

Plan
SELECT STATEMENT ALL_ROWSCost: 3 Bytes: 148 Cardinality: 4   
  1 TABLE ACCESS FULL TABLE SCOTT.EMP Cost: 3 Bytes: 148 Cardinality: 4

----------------------------------------------------------

select /*+ index(emp BIT_IDX_COMM) */ *
from emp
where comm is not null;

Plan
SELECT STATEMENT ALL_ROWSCost: 23 Bytes: 148 Cardinality: 4       
  3 TABLE ACCESS BY INDEX ROWID TABLE SCOTT.EMP Cost: 23 Bytes: 148 Cardinality: 4     
    2 BITMAP CONVERSION TO ROWIDS   
        1 BITMAP INDEX FULL SCAN INDEX (BITMAP) SCOTT.BIT_IDX_COMM


----------------------------------------------------------

bitmap인덱스를 사용함에도 불구하고 full scan보다 cost가 더 걸리는 것은 어떤 경우일까요? 그리고 not null판단 쿼리에서 성능을 높일 수 있는 방법은 무엇일까요?

A:                   엑셈 답변 보러 가기
위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.

[오라클 질문] dynamic sql에서 변수크기를 4000 이상으로 할 수 있는 방법은,,.

기술이야기/Ask 엑셈 2009. 11. 14. 19:04
2009-10-20 15:33:03 에 등록된 질문입니다.  엄정훈 님께서 질문해 주셨습니다.

 [오라클 질문] dynamic sql에서 변수크기를 4000 이상으로 할 수 있는 방법은,,.
Q:
안녕하세요.

dynamic sql을 사용하려고 합니다. 그런데 변수 선언시 4000byte 이상은 안되는걸로 알고 있는데 혹시 clob 같은
data type으로 가능한지.. 아니면 다른 방법이 있을까요?


--
declare
  cursor svc_cursor is 
    select ...
        from dual
    connect by level <= 1000
 
  v_sql        varchar2(4000) ; <-- (?)
  vo_msg      varchar2(200) ;   

begin 
  vo_msg      := null;
 
  open svc_cursor;
  loop
  fetch svc_cursor
  into
      v_strt_ymd
  ;
  v_sql := '.....'  <-- 4000 byte가 넘어갑니다.
 
  end loop ;
  close svc_cursor ;

end
;

A:                     엑셈 답변 보기
위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.

[오라클 질문] View를 사용하였을때. index scan이 발생하면서 느려지는 경우

기술이야기/Ask 엑셈 2009. 11. 12. 15:35
2009-10-28 08:54:23 에 등록된 질문입니다.  최윤규 님께서 질문해 주셨습니다.

[오라클 질문] View를 사용하였을때. index scan이 발생하면서 느려지는 경우

Q :
안녕하세요.

view를 통한 select 를 사용시 비정상적인 시간이 소요되는 경우가 궁금하여서
이렇게 글을 올림니다.

테이블 정보
CREATE TABLE "TXPROPERF03" 
   (    "DT" NUMBER(10,0) DEFAULT 0, 
    "MOMID" NUMBER(10,0) DEFAULT 0, 
    "LISTID" NUMBER(16,0) NOT NULL ENABLE, 
    "XVAL0" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL1" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL2" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL3" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL4" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL5" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL6" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL7" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL8" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL9" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL10" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL11" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL12" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL13" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL14" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL15" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL16" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL17" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL18" NUMBER(12,2) DEFAULT 0.0, 
    "XVAL19" NUMBER(12,2) DEFAULT 0.0, 
    "MYMONDAY" NUMBER(10,0) DEFAULT 0, 
    "MYHOURMIN" NUMBER(5,0) DEFAULT 0
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS NOLOGGING
  STORAGE(INITIAL 5242880 NEXT 5242880 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "SSZENND01R" ;
 
  CREATE INDEX "PROPERF03_LDMYIDX" ON "TXPROPERF03" ("LISTID", "MYMONDAY") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
  STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "SSZENND01X" ;
 
  CREATE INDEX "PROPERF03_LIDDT_IDX" ON "TXPROPERF03" ("LISTID", "DT") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
  STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "SSZENND01X" ;
 
  CREATE INDEX "PROPERF03_MDIDX" ON "TXPROPERF03" ("MYMONDAY") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING 
  STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "SSZENND01X" ;
 
  ALTER TABLE "TXPROPERF03" MODIFY ("LISTID" NOT NULL ENABLE);
 
  GRANT SELECT ON "TXPROPERF03" TO "ISM000";

위 테이블이 1월 부터 12월 까지 12개가 생성 되어 있습니다.

인덱스도 동일하게 생성되어 있고요

그리고 위 테이블 12개를 union all로 View를 생성하였습니다.
       SELECT DT-MOD(DT,60) AS DT, XVAL2 AS VAL
       FROM TXPROPERF_VW
       WHERE DT BETWEEN 1256600040 AND 1256603640
        AND LISTID =9000


선택된 건수는 60건 정도 나오고

위 와 같은 SQL을 실행 하였을때 Explain Plan은
SELECT STATEMENT, GOAL = CHOOSE      43  2942  114738
 VIEW  ISM000A    43  2942  114738
  UNION-ALL          
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF01  4  1  12
    INDEX RANGE SCAN  ISM000A  PROPERF01_LIDDT_IDX  3  1  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF02  3  726  28314
    INDEX RANGE SCAN  ISM000A  PROPERF02_LIDDT_IDX  2  522  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF03  3  261  10179
    INDEX RANGE SCAN  ISM000A  PROPERF03_LIDDT_IDX  2  188  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF04  3  259  10101
    INDEX RANGE SCAN  ISM000A  PROPERF04_LIDDT_IDX  2  186  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF05  3  281  10959
    INDEX RANGE SCAN  ISM000A  PROPERF05_LIDDT_IDX  2  202  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF06  3  356  13884
    INDEX RANGE SCAN  ISM000A  PROPERF06_LIDDT_IDX  2  256  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF07  3  254  9906
    INDEX RANGE SCAN  ISM000A  PROPERF07_LIDDT_IDX  2  183  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF08  3  235  9165
    INDEX RANGE SCAN  ISM000A  PROPERF08_LIDDT_IDX  2  169  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF09  3  276  10764
    INDEX RANGE SCAN  ISM000A  PROPERF09_LIDDT_IDX  2  199  
   TABLE ACCESS BY INDEX ROWID  ISM000A  TXPROPERF10  9  291  11349
    INDEX RANGE SCAN  ISM000A    PROPERF10_LIDDT_IDX    2    209    
   TABLE ACCESS FULL    ISM000A    TXPROPERF11    2    1    39
   TABLE ACCESS BY INDEX ROWID    ISM000A    TXPROPERF12    4    1    15
    INDEX RANGE SCAN    ISM000A    PROPERF12_LIDDT_IDX    3    1    

이었습니다.

보통은 2초 내외가 나오지만, 비정상 적이라고 느낄때는 20초 정도 걸리고 있습니다.

월간 테이블은 천만건정도 insert 되어 있습니다.

검색일자는 하루정도 이며 이경우에는 (unixtime stemp)
한 테이블에서만 검색이 되기 때문에 view를 사용하여도 같은 시간이 소요 되어야 할껏 같은데, 그렇지 않은것 같습니다.

비정상 적인 경우에 대해서 어떤 경우에 그럴수 있는지를 알고 싶습니다.

답변 부탁드립니다.

A:                                           엑셈 답변 보기
위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.

[오라클질문] sort_area_size 의 설정할 수 있는 최소값은 얼마 인가요?

기술이야기/Ask 엑셈 2009. 10. 27. 17:38
2009-10-26 17:54:52 에 등록된 질문입니다. 박상신 님께서 질문해 주셨습니다.

[오라클질문] sort_area_size 의 설정할 수 있는 최소값은 얼마 인가요?
Q:
DB 랩에서 연구 활동 중인 대학원 생입니다. external sort에 대해 공부하고 있는데요. workarea_size_policy를 manual로 설정하고 sort_area_size를 조절해가며 성능을 측정 하고 있습니다. 그런데 sort_area_size를 감소시켜 최악의 경우인 2원 합병 정렬을 유도하려 했는데.. 가령 예를 들어 하나의 row가 100 bytes 라면 sort_area_size를 300 으로 설정하여 최악의 성능을 측정 해보려 했습니다만.. 파라메터는 분명 300 으로 보임에도 불구하고 성능은 파라메터와 달리 어느 정도에서 더 감소하지 않는 상황을 관찰했습니다. 제 생각으론 오라클이 sort_area_size가 특정 값 이하로 낮게 설정되면 강제로 minimum 값으로 변경 시켜버리는 것으로 추측 되는데.. 그 최소 값이 얼마인지 또는 제 생각이 올바른 것인지에 대해 의견 부탁드립니다.

A:                          엑셈 답변 보기

위 글은 (주) 엑셈 온라인 서비스 ASK EXEM 에서 발췌한 것임을 알려 드립니다.