테스트 사이트 - 개발 중인 베타 버전입니다

서버부하를 줄이는 리스트상의 품절상품 보이지 않게하기

· 11년 전 · 10 · 1

안녕하세요

영카트 특성상 주문이 들어와서 품절이 되었더라도 배송으로 처리하지 않는 이상 리스트상에서는 품절로 상품이 보이게 됩니다.

실제수량(get_it_stock_qty()) 기준이 아닌 창고수량(it_stock_qty)이 기준이 되기 때문인데요

이 기본 로직때문에 첨부터 정말 골치가 아픕니다.. 문의글보니 저뿐만이 아니라는 생각이 듭니다

 

이 기본로직때문에 현재는 리스트에 출력할 상품에 대한 sql쿼리시 아래처럼 실제수량을 확인하여 품절이 아닐경우에만 상품을 노출시키고 있습니다.

from `$g4[yc4_item_table]` a
   where

 and a.it_stock_qty > ifnull((select sum(ct_qty) from `$g4[yc4_cart_table]`  where it_id = a.it_id and ct_status in ('주문','준비')),0) 

 

그런데  위처럼 하니 사용자가 증가할수록 부하가 누적되어 버벅이는 현상이 발생합니다.

(단순히 and a.it_stock_qty > 0로 하면 서버부하가 20-30%는 줄어듦을 확인하였습니다.)

 

sir에서 뒤져보니

http://sir.co.kr/bbs/board.php?bo_table=yc4_qa&wr_id=35105  글이 존재합니다만

이또한 get_it_stock_qty() 함수를 사용해야하는데 이함수내부를 살펴보니 현재 쓰는코드보다 더 부하가 가는 sql쿼리문을 사용하고 있습니다.

 

sql쿼리시 저희가 사용하고 있는 and a.it_stock_qty > ifnull((select sum(ct_qty) from `$g4[yc4_cart_table]` where it_id = a.it_id and ct_status in ('주문','준비')),0)  보다 품절상품은 리스트에 보이지 않게 하면서 부하를 줄일수 있는 쿼리나 기타 팁이 없을까요..

 

 

 

 

 

 

 

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

상품이 많은 경우 상품에 품절 필드를 생성하여 품절 표시를 하는것이 부하를 줄이는 가장 좋은 방법 같습니다.
다만, 품절 필드에 값을 어떻게 체크해 넣느냐가 관건이 될것 같습니다.

게시글 목록

번호 제목
55821
55812
55805
55798
55796
55786
55784
55777
55776
55769
55762
55756
55754
55749
55737
55735
55728
55727
55725
55719