mysql 과부하 문제
본문
약 10만개 정도의 데이터가 등록된 테이블에서
select * from aabbcc where bo_table = 'abc' order by rand() limit 1
쿼리가 초당 1번 정도 호출됩니다.
오늘 데이터가 10만개 정도 넘어가니깐 load가 77까지 올라가는데
무슨 좋은 방법이 없을가요
답변 4
데이터가 많을때 rand는 부하를 많이 차지합니다
select * from aabbcc where bo_table = 'abc' order by rand() limit 1
아래처럼 수정해 보세요
(select * from aabbcc where bo_table = 'abc') order by rand() limit 1
굳이 랜덤을 하는 이유가 있나요?
왜 랜덤을 해야하나에 따라 처리 방법이 다양합니다.
mysql 쓰신다면 DB형식을 innodb로 바꾸시구요
rand()를 쓰시는 이유를 정확히 알려주셔야 해결점을 찾을 수 있겠네요
$sql = " select count(*) cnt from aabbcc where bo_table = 'abc' ";$result = sql_query($sql);
$row = sql_fetch_array($result);
$sql = " select * from aabbcc where bo_table = 'abc' limit ".rand(0,$row['cnt']-1).',1';
$result = sql_query($sql);
$row = sql_fetch_array($result);
답변을 작성하시기 전에 로그인 해주세요.