제목 | mysql query 튜닝의 즐거움? | ||
---|---|---|---|
글쓴이 | 변종원(웅파) | 작성시각 | 2013/11/28 11:05:53 |
|
|||
mysql master, slave로 replication 하여 slave에서 리포트 생성을 할때는 문제가 없었는데 두 db를 분리하고 리포트log를 slave로만 쌓고 리포트를 생성하려니 join때문에 master에 있는 테이블이 필요하게 됐고 그걸 해결하고자 federated engine을 사용하였는데 문제는 쿼리속도가 18배 이상이 됐네요. 1차 튜닝을 통해 18초대에서 13초대로 바꿨고 오늘 특정 테이블만 다시 replication 해서 작업하려고 했는데 문득 든 생각! 기준을 바꾸면???? 리포트 테이블은 당연히 row가 많고 그걸 기준으로 조인하고 group by 하니 18초라는 어마어마한 괴물이 됐는데 상품테이블을 기준으로 사용자 것만 가져와서 조인을 하게 하니 대상이 1/100로 줄어들고 쿼리는 13초대에서 0.5초대로 떨어졌네요. federated table에서 조인하는 것은 동일한데 어마어마한 속도차이가.... ^^ 생각의 전환이 시간을 절약해줬네요. (replication 재연결 및 각 쿼리 수정...) 참고쿼리 //기존 select ai.image_url, ai.descreption size, aig.product_name, sum(view_count) vcount, (select sum(click_count) from report where ads_id=rt.ads_id and aig_id=rt.aig_id and ad_position='2') ccount, (select sum(click_count) from report where ads_id=rt.ads_id and aig_id=rt.aig_id and ad_position='3') move_count , aig.dibs_count, aig.reg_date from report rt join f_ad_image ai on rt.ai_id=ai.id join f_ad_image_group aig on rt.aig_id=aig.id where rt.ads_id='369' and rt.ad_position='2' group by aig_id order by aig.id desc; //바뀐 select ai.image_url, ai.descreption size, aig.product_name, aig.dibs_count, aig.reg_date, sum(view_count) vcount, (select sum(click_count) from report where ads_id=rt.ads_id and aig_id=rt.aig_id and ad_position='2') ccount, (select sum(click_count) from report where ads_id=rt.ads_id and aig_id=rt.aig_id and ad_position='3') move_count from f_ad_image_group aig join report rt on aig.id=rt.aig_id join f_ad_image ai on rt.ai_id=ai.id where aig.advertiser_id = '223' and rt.ads_id ='369' and rt.ad_position ='2' group by aig.id order by aig.id desc ; |
|||
다음글 | 코드이그나이터 캐시 써봤는데요... (2) | ||
이전글 | 불이 났다던데.. 괜찮은지요?? (3) | ||
들국화
/
2013/11/28 11:24:39 /
추천
0
|
변종원(웅파)
/
2013/11/28 11:26:48 /
추천
0
들국화/ 그러게요. 장비가격이 싸진 이후로 별로 생각하지 않았던... ^^;
이번에도 제일 처음 든 생각이 업 스케일해? 이거 였으니까요. |
한대승(불의회상)
/
2013/11/28 11:44:46 /
추천
0
선최적화 후투자... 귀찮으면 선투자 후최적화... ^^
|
변종원(웅파)
/
2013/11/28 15:40:12 /
추천
0
불의회상/ 문제는 선투자까지는 되는데 후최적화가 안된다는.... ^^
|
한대승(불의회상)
/
2013/11/28 15:55:48 /
추천
0
웅파/ ㅎㅎㅎㅎ 그렇군요. 계속 투자만 하게 되겠네요.. ^^
|
쿼리 작성의 절대 원칙 필요한 것만 읽는다.. ^^