인사말!php sqlsrv_fetch_object 성능
사이트에서 자르고있는 몇 가지 성능 문제를 해결하려고합니다. 이 노력의 일환으로 GA에 따라 가장 트래픽이 많은 페이지를 프로파일 링하기 시작했습니다.
본질적으로 내가 처음에는 의심했던 것처럼 대부분의 시간은 데이터베이스 관련 트래픽에 있다고 판단했습니다. 불행히도, 가까이에서 볼 때, 내가 발견 한 것은별로 의미가 없습니다.
예를 들어이 호출 인 MyAlganon_Model_Library_Item :: fetchItemTooltipsByItemIdArray()는 준비 플랫폼에서 돌아 오기 위해 580.41ms를 사용합니다. 이에,
$row = sqlsrv_fetch_object($this->query);
while ($row) {
$results[] = $row;
$row = sqlsrv_fetch_object($this->query);
}
return $results;
것 같은데 : 그것의 533.12ms가 fetchAll() 함수에 소요되는 동안 해당 시간의 47.27ms로 다이빙시
단순히 sqlsrv_fetch_object를가하고 루프가() sqlsrv_query에 소요되는 특정 페이지에는 결과 세트에 742 개의 행이 있습니다. 어쩌면 StdClass 객체를 생성하는데 얼마나 오랜 시간이 걸리는지 현실적으로 다루지 않는 것이 문제일까요? 533.12ms는 742 개의 결과를 반복하고 오브젝트 배열로 변환하는 정상적인 시간처럼 보입니까?
쿼리가 무엇입니까 : 당신이 제공 한 조각을 업데이트 할 수 있습니다? 문제는 아마도 쿼리가 아닌 함수를 사용했을 것입니다. –
필요하다면 sproc에서 쿼리를 추출 할 수는 있지만, 47에서 sqlsrv_query가 반환하는 쿼리를 고려해 볼 수는 없습니다.sproc을 실행하는 부분 인 27ms. 나머지 533.12ms는 sqlsrv_fetch_object를 호출하여 결과 집합을 반복합니다. – jdsmith2816
쿼리에서 많은 수의 열을 반환하면 StdClass 개체로 래핑하는 데 시간이 걸립니다. 이 경우 쿼리/테이블을 최적화하면 문제가 해결됩니다. –