FORUM

조회 수 8031 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

CUBRID를 이용하여 프로젝트를 수행하기 위해 학습과 테스트를 진행 하고 있습니다.

테스트 진행 과정에서 몇가지 의문점이 있어 글을 올립니다.

 

아래와 같은 테이블에 ado.net과 cci를 이용하여 insert 테스트를 수행 했습니다.

cci가 ado.net 에 비해 같거나 더 좋은 성능을 보일것으로 기대했으며,

cci에 있는 cci_execute_array의 성능도 많이 기대 하고 테스트를 수행했습니다.

 

테스트용 테이블

CREATE TABLE tb_test (
 field01  DATETIME   NOT NULL,
 field02  VARCHAR(128) NOT NULL,
 field03  INTEGER    NOT NULL,
 field04  INTEGER    NOT NULL,
 field05  NUMERIC(20)  NOT NULL,
 field06  NUMERIC(24,4) NOT NULL,
 field07  NUMERIC(8,5) NOT NULL,
 field08  NUMERIC(20)  NOT NULL,
 field09  NUMERIC(24,4) NOT NULL,
 field10  NUMERIC(20)  NOT NULL,
 field11  NUMERIC(8,5) NOT NULL,
 field12  NUMERIC(20)  NOT NULL,
 field13  NUMERIC(8,5) NOT NULL,
 field14  NUMERIC(20)  NOT NULL,
 field15  NUMERIC(8,5) NOT NULL,
 field16  NUMERIC(20)  NOT NULL,
 field17  NUMERIC(8,5) NOT NULL,
 field18  NUMERIC(20)  NOT NULL,
 field19  NUMERIC(8,5) NOT NULL,
 field20  NUMERIC(20)  NOT NULL,
 field21  NUMERIC(8,5) NOT NULL,
 field22  NUMERIC(20)  NOT NULL,
 field23   NUMERIC(8,5) NOT NULL,
 field24  NUMERIC(20)  NOT NULL,
 field25  NUMERIC(24,4) NOT NULL,
 field26  NUMERIC(8,5) NOT NULL,
 field27  NUMERIC(20)  NOT NULL,
 field28  NUMERIC(24,4) NOT NULL,
 field29   NUMERIC(20)  NOT NULL,
 field30  NUMERIC(8,5) NOT NULL,
 field31  NUMERIC(20)  NOT NULL,
 field32  NUMERIC(8,5) NOT NULL,
 field33  NUMERIC(20)  NOT NULL,
 field34  NUMERIC(8,5) NOT NULL,
 field35  NUMERIC(20)  NOT NULL,
 field36  NUMERIC(8,5) NOT NULL,
 field37  NUMERIC(20)  NOT NULL,
 field38  NUMERIC(8,5) NOT NULL,
 field39  NUMERIC(20)  NOT NULL,
 field40  NUMERIC(8,5) NOT NULL
);

 

인서트에 사용된 sql문

"INSERT INTO tb_test (field01,field02,field03,field04,field05,field06,field07,field08,field09,field10,field11,field12,field13,field14,field15,field16,field17,field18,field19,field20,field21,field22,field23,field24,field25,field26,field27,field28,field29,field30,field31,field32,field33,field34,field35,field36,field37,field38,field39,field40)
 VALUES (sysdatetime,'text',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)"

 

테스트 환경

      OS : Windows2008 32Bit

    CPU : Intel Q6600 2.4GHz 

   RAM : 4GB

     IDE : VS2008

      DB : CUBRID-Windows-x86-8.4.1.7007

 

테스트는 위 sql문을 1000번, 10000번 반복하여 레코드를 입력하는 형태로 auto commit과 manual commit로 구분하여 수행했습니다.

 

ado.net 결과(CUBRIDCommand.ExecuteNonQuery)

                   auto commit                  manual commit

1000번              1,151ms                                620ms

10000번          11,022ms                              6,342ms

 

cci 결과(cci_prepare_and_execute)

                   auto commit                   manual commit

1000번              2,589ms                              2,215ms

10000번          26,192ms                            22,043ms

 

cci 결과(cci_execute_array)

                 auto commit                     manual commit

1000번            1,186ms                                1,201ms

10000번        12,183ms                              11,934ms

 

결과는 예상했던것과 많이 달랐습니다. cci의 처리 성능이 ado.net에 비해 2~3배정도 더 오래 걸렸고 기대했던 array기능은

일반 execute에 비해 2배정도의 성능이였습니다.

 

질문 1 : cci가 ado.net에 비해 2~3배정도 느린것이 테스트가 잘못 이루어진 것인지 아니면 정상적인 결과인지 궁금합니다.

질문 2 : cci_execute_array의 성능이 일반 execute에 비교하여 월등한 성능(5~10배정도)을 보이지 않는것이 정상인지 궁금합니다.

 

수고하세요.

 

  • ?
    cgkang 2012.11.01 21:34

    테스트 프로그램도 올려주시기 바랍니다.

    확인후 알려드리겠습니다.

  • ?
    할리 2012.11.01 22:15 Files첨부 (1)

    테스트에 사용된 소스코드입니다.

  • ?
    cgkang 2012.11.03 20:51

    cci_prepare_and_execute 성능:

    cci_prepare_and_execute는 매 쿼리가 수행될때 preapre와 execute를 반복하게 됩니다.

    입력된 쿼리 스트링이 동일한 쿼리라고 하더라도 preapre를 수행하게 됩니다.

    테스트 프로그램에서

    req_handle = cci_prepare(conn, ...)

    for ( ... )

        result = cci_execute(req_handle, ...)

     

    이런 식으로 바꿔주면 prepare없이 execute만 반복하게 되어 빠른 결과를 얻을수 있습니다.

     

    cci_execute_array 성능:

    지금 테스트는 execute_array의 성능을 비교하는것으로 보기는 어렵습니다.

    한쪽은 동일한 static query를 반복 수행만 하는 형태가 되고,

    execute_array는 입력된 값들을 타입에 맞도록 변환해서 추가하는 과정이 포함됩니다.

    실제 상황과 유사하게 모든 레코드의 값들이 일부라도 달라지도록,

    예를들어 text1, text2,... 이런식으로 값이 바뀌게 입력하도록 테스트 프로그램을 바꾸거나,

    bind되는 수를 1개 정도로 줄이면 bind값을 처리하는 오버헤드가 줄어들게 되어 execute_array가 더 빠른 결과를 낼 것으로 보입니다.

     

    참고로 서버쪽에 $CUBRID/log/broker 아래에 실행된 쿼리 로그가 기록되는데,

    prepare, execute등 수행된 상태가 기록되므로 api에 따라 어떻게 달라지는지 동작을 확인할 수 있을것입니다.

     

  • ?
    할리 2012.11.05 23:20

    답변 감사합니다.

    로그를 확인해보니 매번 쿼리 마다 prepare를 수행 하도록 하기위한 테스트 였습니다만, ado.net에서는 prepare과정을 한번만 수행하고 execute만 반복하여 생긴 차이였군요.

     

    prepare를 생략하고 테스트 해보니 1000번 기준 ado.net이 640ms, cci 가 540ms, cci_execute_array가 1,050ms 가 소요 됩니다.

    실제 사용시에는 이렇게 사용하지 않고 prepare과정을 거처서 사용하므로 cci_execute_array 가장 빠르겠지만,  cci_execute_array의

    성능에 아쉬움이 남습니다.

     

    감사합니다.

     


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 11 admin 2024.04.23 45297
1309 loaddb 로 대량의 data insert 시 질문드립니다. 1 laim 2012.11.16 10891
1308 HA 구성 중 공인IP를 사설IP로 변경 시 유의할 점 문의 1 freemir 2012.11.16 10757
1307 PC 전원이 나가고 DB가 구동 안되는 현상 2 나이스가이 2012.11.14 7853
1306 CCI_PCONNECT 사용 여부에 따라 브로커가 죽거나 행 상태에 빠질 수도 있습니까? 1 섭개발자 2012.11.10 7172
1305 큐브리드 메니져 접속이 안됩니다. 3 들뿔 2012.11.08 10119
1304 NBD벤치마크에 대한 질문입니다 1 file 로운 2012.11.08 7014
1303 큐브리드 매니져에서 멀티라인 SQL문의 일괄실행 방법 2 andante 2012.11.08 9315
1302 ado.net에서 insert query 문 1 바람바람 2012.11.07 9346
1301 테이블이 지워졌는데도 씨리얼이 남아있는 현상에 대해서 1 김인선 2012.11.07 6467
1300 실행이 안됨 2 kemuel 2012.11.06 8117
1299 큐브리드 4.1 업그레이드 관련 질문 드립니다. 1 conomia 2012.11.02 6300
1298 큐브리드 스키마 복구 및 HA 관련 문의 2 file 김인선 2012.11.01 13586
» cci 처리 속도관련 문의 4 할리 2012.11.01 8031
1296 DB 생성 시 안정적인 볼륨 및 페이지 크기는 얼마인가요?? 1 삼돌이 2012.10.27 9354
1295 큐브리드 매니저에서 저장된 비밀번호가 틀리다는 메시지 4 종이 2012.10.26 7244
1294 ORACLE DB LINK 문의 1 secret MJHan 2012.10.24 6
1293 DB 백업 복구 시 오류 확인 요청 1 secret 삼돌이 2012.10.23 9
1292 oledb DATA Query Open 시 오류 발생 1 choiboss 2012.10.23 7433
1291 OLEDB 설치시 오류 15 file choiboss 2012.10.20 16827
1290 Query execution failure #7264 에러가 무슨에러죠? 1 앙고라 2012.10.20 9810
Board Pagination Prev 1 ... 140 141 142 143 144 145 146 147 148 149 ... 210 Next
/ 210

Contact Cubrid

영업문의 070-4077-2112 / 기술문의 070-4077-2148 / 대표전화 070-4077-2110 / Email. contact_at_cubrid.com
Contact Sales

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

나눔고딕 사이트로 가기

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5