Background Image

FORUM

조회 수 9152 추천 수 0 댓글 5
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
php 솔루션 개발자입니다.
php 에서는 select 는 오토커밋이 되지 않는다고 말씀을 하셨는데...
현재 select 는 모두 오토커밋이 이루어지고 있습니다.

특별히 설정을 변경하거나... 그런 것은 없습니다.
어떤 경우에 select 가 오토커밋이 되는지... 궁금합니다....

테스트 환경은 apm_setup + cubrid2008 입니다.
기본 환경에서 전혀 변경한 것이 없습니다.
현재 select 는 오토커밋이 되고... insert, update, delete 등은 commit 을 주어야 처리 되고 있습니다.

감사합니다.
  • ?
    시난 2009.08.03 23:15

    브로커의 sql 실행로그를 해당 부분만 첨부해주실 있을런지요?

    보통 다음과 같이 로그가 남게 되는데
    남겨주시면 큰 도움이 될 것입니다.

    08/03 14:11:56.142 (0) connect 127.0.0.1
    08/03 14:11:56.142 (0) connect demodb PUBLIC
    08/03 14:11:56.143 (0) isolation level : 3, lock timeout : -1, auto_commit : false
    08/03 14:11:56.143 (0) get_version
    08/03 14:11:56.143 (3) prepare 0 select * from athlete
    08/03 14:11:56.145 (3) prepare srv_h_id 1
    08/03 14:11:56.201 (3) execute srv_h_id 1 select * from athlete
    08/03 14:11:56.202 (3) execute 0 tuple 0 time 0.001
    08/03 14:11:56.218 (0) con_close
    08/03 14:11:56.223 (0) disconnect
    *** 0.081

     

  • ?
    남재우 2009.08.05 18:43

    php는 오토커밋이 없습니다. select 역시 자동커밋되지 않는 것이 맞습니다.
    PHP 는 특성상 페이지가 끝나면 commit 처리하지 않는한 자동으로 롤백처리합니다.
    지금 커밋된다고 하셨는데 어떤 정보를 보고 커밋을 한다고 하셨는지 알려주시면 감사하겠습니다. CUBRID의 기본설정에서는 select 시 레코드에 읽기관련락(S_LOCK)을 잡지는 않습니다. 단지 테이블이 잠재된읽기락(IS_LOCK)이 잡히기만 합니다.
    select 후 PHP 페이지에 sleep 을 한 1분 정도 넣어놓고 해당 페이지를 실행후 cubrid broker status 해보시면 CLIENT_WAIT 로 되어있는 것이 보이실 것입니다. 이것이 바로 트랜잭션이 종료되지 않아 client 로부터 트랜잭션의 종료를 기다리는 상태입니다.

    다음은 db_class 라는 시스템테이블에 select 질의후 commit/rollback 을 하지 않고 단순히 fetch만 완료한 상태입니다.
    아래가 cubrid broker status 화면 일부입니다.
    ----------------------------------------------------
    ID   PID     C PSIZE STATUS        LAST ACCESS TIME
    ----------------------------------------------------
     1 24968    93 10992 CLIENT WAIT 2009/08/05 09:33:39
    아래는 lock 정보를 보여주는 cubrid lockdb 의 결과입니다. 앞서 설명드린것처럼 레코드(Instance 로 표시됨)에는 S_LOCK이 없고, 테이블에만 IS_LOCK이 있는 것을 확인할 수 있습니다.
    Object type: Class = db_class.
    Total mode of holders =   IS_LOCK, Total mode of waiters = NULL_LOCK.

     

  • ?
    메이커스 2009.08.05 20:36
    상세한 답변 감사드립니다.
    커밋없이 단순히 select 만 해도 데이터가 모두 추출 되기에 오토커밋이라고 말씀 드렸습니다.
    커밋없이 select 만 해도 데이터가 fetch 되는 것은 어떤 경우라 봐야하는지요..?
    오라클의 경우에는 잘 기억 나지 않지만.. DB2의 경우에는 오토커밋을 오프하면... select 시에도 전혀 fetch가 되지 않는 것으로 알고 있습니다. 하여간, 답변 주신 내용으로 좀 더 자세히 테스트를 해보도록 하겠습니다. 감사합니다.

    가ㅓㅁ
  • ?
    남재우 2009.08.05 21:20

    php는 오토커밋이 없습니다. select 역시 자동커밋되지 않는 것이 맞습니다.
    PHP 는 특성상 페이지가 끝나면 commit 처리하지 않는한 자동으로 롤백처리합니다.
    지금 커밋된다고 하셨는데 어떤 정보를 보고 커밋을 한다고 하셨는지 알려주시면 감사하겠습니다. CUBRID의 기본설정에서는 select 시 레코드에 읽기관련락(S_LOCK)을 잡지는 않습니다. 단지 테이블이 잠재된읽기락(IS_LOCK)이 잡히기만 합니다.
    select 후 PHP 페이지에 sleep 을 한 1분 정도 넣어놓고 해당 페이지를 실행후 cubrid broker status 해보시면 CLIENT_WAIT 로 되어있는 것이 보이실 것입니다. 이것이 바로 트랜잭션이 종료되지 않아 client 로부터 트랜잭션의 종료를 기다리는 상태입니다.

    다음은 db_class 라는 시스템테이블에 select 질의후 commit/rollback 을 하지 않고 단순히 fetch만 완료한 상태입니다.
    아래가 cubrid broker status 화면 일부입니다.
    ----------------------------------------------------
    ID   PID     C PSIZE STATUS        LAST ACCESS TIME
    ----------------------------------------------------
     1 24968    93 10992 CLIENT WAIT 2009/08/05 09:33:39
    아래는 lock 정보를 보여주는 cubrid lockdb 의 결과입니다. 앞서 설명드린것처럼 레코드(Instance 로 표시됨)에는 S_LOCK이 없고, 테이블에만 IS_LOCK이 있는 것을 확인할 수 있습니다.
    Object type: Class = db_class.
    Total mode of holders =   IS_LOCK, Total mode of waiters = NULL_LOCK.

     

  • ?
    남재우 2009.08.05 21:20

    php는 오토커밋이 없습니다. select 역시 자동커밋되지 않는 것이 맞습니다.
    PHP 는 특성상 페이지가 끝나면 commit 처리하지 않는한 자동으로 롤백처리합니다.
    지금 커밋된다고 하셨는데 어떤 정보를 보고 커밋을 한다고 하셨는지 알려주시면 감사하겠습니다. CUBRID의 기본설정에서는 select 시 레코드에 읽기관련락(S_LOCK)을 잡지는 않습니다. 단지 테이블이 잠재된읽기락(IS_LOCK)이 잡히기만 합니다.
    select 후 PHP 페이지에 sleep 을 한 1분 정도 넣어놓고 해당 페이지를 실행후 cubrid broker status 해보시면 CLIENT_WAIT 로 되어있는 것이 보이실 것입니다. 이것이 바로 트랜잭션이 종료되지 않아 client 로부터 트랜잭션의 종료를 기다리는 상태입니다.

    다음은 db_class 라는 시스템테이블에 select 질의후 commit/rollback 을 하지 않고 단순히 fetch만 완료한 상태입니다.
    아래가 cubrid broker status 화면 일부입니다.
    ----------------------------------------------------
    ID   PID     C PSIZE STATUS        LAST ACCESS TIME
    ----------------------------------------------------
     1 24968    93 10992 CLIENT WAIT 2009/08/05 09:33:39
    아래는 lock 정보를 보여주는 cubrid lockdb 의 결과입니다. 앞서 설명드린것처럼 레코드(Instance 로 표시됨)에는 S_LOCK이 없고, 테이블에만 IS_LOCK이 있는 것을 확인할 수 있습니다.
    Object type: Class = db_class.
    Total mode of holders =   IS_LOCK, Total mode of waiters = NULL_LOCK.

     


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 105
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4471
1239 sql 쿼리중 중복 제거 문제 조언좀 부탁드립니다... 2 광황제 2012.08.01 13483
1238 DB생성시 문자집합 변경 1 까망이 2012.07.31 7138
1237 tomcat7 + cubrid 1 깽즈야 2012.07.27 91089
1236 Node.js 용 모듈 있나요? 1 데니 2012.07.25 7900
1235 HA 에서 테이블 생성을 하는 방법 문의 3 freemir 2012.07.23 6120
1234 [질문 2개] ERROR CODE = -452 3 reerror 2012.07.20 8359
1233 c# 으로 DB생성하기.... 2 안드레세상 2012.07.20 9556
1232 insert all 사용방법이??? 1 머리아파 2012.07.19 9903
1231 PHP , cubrid_fetch 문의 9 Aramis 2012.07.19 6015
1230 라이센스 관련 문의 드립니다. 1 달려용 2012.07.19 6875
1229 ERROR CODE = -41 2 reerror 2012.07.18 8623
1228 java에서 플랜정보 문의 2 hangum 2012.07.17 5587
1227 큐브리드 매니저에서 호스트 추가 시, 호스트 명 관련 문의 2 차오이 2012.07.13 5776
1226 Visual Studio 2010과 Cubrid ole db provider연동 문제 7 안드레세상 2012.07.08 19806
1225 HA 하에서 DB에 해당 내용이 없는데 RO 브로커에서 select가 되는 현상 5 freemir 2012.07.04 7032
1224 DBMS -1016 오류 外 버그 제보 및 문의 6 차오이 2012.07.03 8728
1223 테이블 에서 데이터 타입인 set의 사이즈를 구하는 쿼리는 없을까요? 1 니르바나 2012.06.27 6529
1222 리눅스 환경에서 자동실행.... 1 석균 2012.06.25 9963
1221 이런 형태의 테이블에는 데이터를 어떻게 삽입합니까? 1 푸훗 2012.06.25 5827
1220 정기 교육 관련 문의 드립니다. 1 kings 2012.06.22 6205
Board Pagination Prev 1 ... 134 135 136 137 138 139 140 141 142 143 ... 200 Next
/ 200

Contact Cubrid

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