컴포지션 관련해서 문의 드립니다.

by 野花 posted Feb 12, 2010


큐브리드의 컴포지션 기능을 활용하여 테이블을 구성했습니다.

ymd_base
yy  char(4)     -----|
mm char(2)         |   PK
dd char(2)     ------|

counter
ymd ymd_base --|    Unique Index
cnt int


위와 같이 구성을 하고 아래와 같은 쿼리를 구성을 했습니다.

select cnt, incr(cnt) from counter where ymd.yy='2010' and ymd.mm='02' and ymd.dd='11';

cnt 값이 0 이상이면 위 쿼리로 종료를 하고 아니라면
ymd_base 테이블에 오늘 날짜의 yy,mm,dd가 있는지 select 해보고 없으면
insert를 하고 counter 테이블에는 무조건 insert를 하게 되어 있습니다.

그런데.. 아래와 같은 결과가 나옵니다.
초당 요청 수나 트랜젝션 수가 그렇게 많지는 않은 듯 한데..

CPU 사용률이 700% 정도 나오네요;;;;

큐브리드 설정 부분이 잘 못된 것인지..
아니면 쿼리나 테이블 구성 등을 잘못 쓰고 있는지 모르겠습니다.
그리고 PHP 에러 로그로 아래와 같이 찍힙니다..


PHP Warning:  Error: DBMS, -76, Your transaction (index 2, dba@ems|30432) timed out waiting on WRITE on page 0|2677. You are waiting for user(s) pd@ems|2950 to release the page lock.


감을.... 잘 못잡겠네요;;;;
CPU사용률이 높은 이유와..
위의 PHP에러가 발생하는 이유.. 에 대한 설명과 해결 방법을 문의 드립니다;;;

ps. 새해 복 많이 받으세요~




PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

30530 cubrid    15   0 1410m 143m 3140 S 731.2  1.9 517:57.53 cub_server


Process 30530 attached - interrupt to quit

select(1024, [9], NULL, [9], {3, 728000}) = 0 (Timeout)

fcntl(9, F_GETFL)                       = 0x2 (flags O_RDWR)

select(1024, [9], NULL, [9], {5, 0})    = 0 (Timeout)

fcntl(9, F_GETFL)                       = 0x2 (flags O_RDWR)

select(1024, [9], NULL, [9], {5, 0})    = 0 (Timeout)

fcntl(9, F_GETFL)                       = 0x2 (flags O_RDWR)

select(1024, [9], NULL, [9], {5, 0})    = 0 (Timeout)

fcntl(9, F_GETFL)                       = 0x2 (flags O_RDWR)

select(1024, [9], NULL, [9], {5, 0})    = 0 (Timeout)

fcntl(9, F_GETFL)                       = 0x2 (flags O_RDWR)


Articles

23 24 25 26 27 28 29 30 31 32