제목 | codeigniter 데이터베이스 쿼리 속도 질문 드립니다. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 김제연 | 작성시각 | 2017/11/08 15:28:38 |
|
|||
간단한 테이블이 있습니다.. 그냥 비트코인 시세 들어가있는 테이블입니다. '2224503', 'BTC-XMR', '0.7%', '2014-06-04', '-1.1%', '0.014524290', '0.013258510', '0.013746110', '553.4060', '14', 'Monero', 'XMR', '2017-11-08 14:16:20'
이런식의 값이 들어가있고
쿼리식은 select * FROM bitrex_nt where market = 'BTC-XMR' and created_at >= date_add(now(),interval -4 hour) group by rank
위와 같고 ..workbench 상에서 쿼리 하면.. 0.00x초 만에 .. 모두 처리가 되는 쿼리문입니다.
그런데 .. codeingiter 모델에서 $sql = "SELECT * FROM bitrex_nt where market = ? and created_at >= date_add(now(),interval -4 hour) group by rank"; $result = $this->db->query($sql, $market)->result();
이런식으로 가져오려고 하면.. 4~6초 등.. 엄청 느리게 동작 하는데 ... 제가 빠트린 부분이 있을까요? 따로 .. 소스가 있는게 아니라 .. 그냥 가져오는곳에서 느려 버리니.. 초보인 제가 어떻게 해볼 도리가 없습니다.. 왜 느려지는 것인지 알 수 있을까요 .. 개선 방법도 있다면 부탁 드립니다.
3.1.5 사용중이고 리눅스 입니다. |
|||
다음글 | 값 넘겨서 페이지 호출할때 css및 js가 적용되지 않... (2) | ||
이전글 | do_upload 시 (1) | ||
변종원(웅파)
/
2017/11/08 15:38:49 /
추천
0
|
김제연
/
2017/11/08 15:47:42 /
추천
0
안그래도 검색으로 프로파일러 켜라고 해서 .. 켜봤는데 쿼리시간이 <legend style="color:#0000FF;"> DATABASE: cryptocoin (Bitrex:$db) QUERIES: 1 (6.0989 seconds) (<span style="cu 이렇게 뜹니다.. 6초로요 ..
php 디버그로 ... 요청하면.. 저 위에 $sql 까지 바로 옵니다.. 그리고 .. F10 눌러서 .. 한단계 실행하면.. 실제로 6초 뒤에 .. 다음 구문으로 넘어갑니다... |
변종원(웅파)
/
2017/11/08 16:08:35 /
추천
0
워크벤치에선 0점대가 나오고 서버에서 6초가 나온다면 서버와 mysql서버 구간을 의심해볼 수 있습니다. 웹과 mysql이 같은 서버에 있는건가요? 위 쿼리 하나만 컨트롤러 메소드로 만들어서 테스트를 해보시면 확실해질 것 같네요. |
김제연
/
2017/11/08 16:17:04 /
추천
0
네 같은 서버 입니다. 이것도 .. 다른 처리 하나 없이.. 컨트롤러에서 모델로 호출하고 .. 모델에서 바로 위에 적은 두줄만 실행하고 저 뒤에 echo 로 .. json_encoding 해서 넘겨주는게 다 입니다. |
김제연
/
2017/11/08 16:18:36 /
추천
0
public function getHistory() { $market = json_decode(file_get_contents("php://input"),true); $this->bitrex_m->getHistory_4h($market); } $sql = "SELECT * FROM bitrex_nt where market = ? and created_at >= date_add(now(),interval -4 hour) group by rank"; $this->output->enable_profiler(TRUE); $result = $this->db->query($sql, $market)->result(); echo json_encode($result); |
김제연
/
2017/11/08 16:29:03 /
추천
0
금방 public function getHistory2() { $market = "BTC-ETH"; $sql = "SELECT * FROM bitrex_nt where market = ? and created_at >= date_add(now(),interval -4 hour) group by rank"; $result = $this->db->query($sql, $market)->result(); echo json_encode($result); } |
김제연
/
2017/11/08 16:29:44 /
추천
0
방금 컨트롤러를 만들어서 해봤으나 똑같이 5~6초 이상 걸리네요...어디를 의심해 봐야 할까요?
|
변종원(웅파)
/
2017/11/08 16:34:37 /
추천
1
바인딩 빼고 값을 넣어서 쿼리 작성해서 테스트 해보시고 그래도 동일하다면 현재 여건에서는 더 답변드리기가 힘들것 같네요.
|
김제연
/
2017/11/08 16:34:57 /
추천
0
아 .. 지금 좀 이상하네요 ... 웹이랑 디비랑 같은 서버인줄 알았는데 .. 서버가 틀려서 DB서버에 들어가서 직접 입력을 해봤는데 ... DB서버에서 8~9초 이런식으로 나와버리네요.. 그런데 신기하게 .. 같은 db서버에 workbench 로 접속해서 쿼리 하면 0.01초가 걸립니다. |
김제연
/
2017/11/08 16:35:41 /
추천
0
답변 감사 드립니다.. 이상황에서는 codeigniter 와 상관없이 어디 다른곳에 문제가 있는 듯 싶네요 ..
|
변종원(웅파)
/
2017/11/08 16:36:50 /
추천
0
쿼리 캐시일 수도 있을 것 같네요
|
단순히 저 부분때문에 느려지는건 아닐 것 같습니다.
profiler 켜서 query 전체의 시간을 확인해보세요.