느린 Data Explorer 쿼리

Data Explorer 쿼리를 몇 개 만들었습니다.

관리자 백엔드에서 실행하면 GUI가 DB 쿼리 자체의 매우 빠른 실행 시간을 표시합니다. 예를 들어 “Query completed in 7.9 ms.” 같은 식이죠.

하지만 브라우저의 네트워크 로그를 보면, 예를 들어 https://example.com/admin/plugins/explorer/queries/1/run 에 액세스하여 결과를 받는 데 1~2 수배 더 긴 시간이 걸리는 것을 확인할 수 있습니다. 예를 들어 150ms 정도요.

curl로 해당 쿼리를 실행하면 더 오래 걸리며, 관리자 패널에서 쿼리를 실행하는 것보다 약 2배 정도 시간이 더 소요됩니다.

이러한 오버헤드 없이 빠르게 가져올 수 있는 Data Explorer 쿼리를 어떻게 만들 수 있을까요?

제공해주신 정보에 따르면, 해당 쿼리는 RDBMS에서 빠르게 실행되는 단순한 쿼리이지만, 많은 행을 반환하여 백엔드에서 직렬화/역직렬화 및 전송에 시간이 오래 걸리는 것으로 보입니다.

현재 성능이 사용 사례를 방해하고 있다면, 다음과 같은 다양한 해결책을 검토해 볼 수 있습니다:

  • 페이지당 행 수를 줄여 각 페이지의 로딩 속도를 높입니다.

  • 동일한 정보를 새로운 API 엔드포인트로 노출하되, 캐싱과 데이터 형식 처리를 더 효율적으로 수행하는 플러그인을 개발합니다.

  • 기본 데이터베이스를 직접 쿼리합니다.

특정 컬럼 이름(user_id, post_id 등)에 대해 마법 같은 조회(magical lookups)가 있으며, post_id1 등으로 별칭을 지정할 수 있습니다.

감사합니다!

쿼리의 결과가 단 하나의 행뿐인 경우에도 마찬가지입니다. 예를 들어 단일 정수를 반환하는 쿼리의 경우, 관리자 백엔드의 Data Explorer 패널에서 실행하면 9ms가 걸리지만, curl을 통해 외부에서 Data Explorer API에 대해 실행하면 200ms가 걸립니다.

그것은 정말로 피하고 싶습니다. Data Explorer는 이 포럼에서 데이터베이스에서 정보를 가져오는 좋은 방법이자 잘 작동하는 API로 권장되어 사용하기 때문입니다.

제 쿼리는 결과 세트가 아닌 JOIN에 그들을 사용합니다. SELECT에는 단 하나의 열만 있으며, 그것은 임의의 이름을 가진 새로 계산된 열입니다.

NGINX가 요청에 대해 서버 시간을 어떻게 보고 있나요? 이는 네트워크 문제일 수 있을까요?

HTTP 상태 코드 오른쪽 3번째 자리 숫자들이 부동 소수점 숫자라고 가정하면(예: ... 200 642 "-" **0.107 0.108** "system" ..., 별표로 강조한 부분), 이 값들은 백엔드에서 보고된 쿼리 시간의 약 10배이며, 내 클라이언트에서 curl을 실행하는 데 걸리는 시간의 거의 정확히 절반입니다.