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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4443
787 윈도우에 등록되는 서비스명 변경이 가능한가요? ^^ 2 노스 2010.11.08 10744
786 Apm_setup7로 자동설치시 연동이 안되는데... 1 또랑 2010.11.08 8277
785 컴파일시 에러가 발생합니다... 28 SoMa 2010.11.08 17475
784 큐브리드 매니저 접속관련 1 가루구 2010.11.06 7338
783 Cannot make connection to master server.... Bad file descriptor T.T 4 노스 2010.11.05 11937
782 SQL질문 1 마이나스 2010.11.05 7143
781 큐브리드 매니저 접속이 안됩니다. 2 김현성 2010.11.04 8316
780 no 컬럼명을 사용해선 안되나요? 2 코딩셔틀 2010.11.03 10044
779 java.lang.ClassNotFoundException 에러가 납니다. 3 코딩셔틀 2010.11.03 20110
778 unisql 6 버전을 큐브리드로 마이그레이션 하는 방법을 찾고있습니다. 1 제발요 2010.11.02 7868
777 php컴파일할려고하면.. 1 SoMa 2010.10.29 7465
776 동시접속 포트 수 문의 1 유니콘 2010.10.29 11924
775 broker 구동이 안되네요 3 히로 2010.10.28 9651
774 primary key의 인덱스에 관한 질문 1 카르마 2010.10.27 12020
773 A provider-specific error occurred 에러 1 file 유니콘 2010.10.26 10262
772 루씬팩 7 SoMa 2010.10.26 8306
771 설치시 에러가 발생합니다. 1 SoMa 2010.10.24 14513
770 server 다운문제 1 김현성 2010.10.19 7631
769 TO_CHAR 관련 질문입니다. 3 노스 2010.10.18 21947
768 SQL 에러 질문 1 카르마 2010.10.16 9958
Board Pagination Prev 1 ... 156 157 158 159 160 161 162 163 164 165 ... 200 Next
/ 200

Contact Cubrid

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