Django의 첫 번째 쿼리는 항상 느리다.
저는 간단한 장고 앱을 가지고 있고, 두 가지 모델과 뷰만 있습니다.db를 쿼리할 때마다 첫 번째 쿼리는 항상 1초 정도 걸리고 그 이후의 쿼리는 거의 순식간에 이루어집니다.
제 견해는 다음과 같습니다.
def my_view(request):
start = time.time()
print('0', time.time() - start)
a = TestClass.objects.get(name="test")
print('1', time.time() - start)
b = TestCustomer.objects.get(name="test")
print('2', time.time() - start)
return render(request, 'test.html', {})
실행 시 다음과 같은 출력이 표시됩니다.
0 0.0
1 1.0049302577972412
2 1.0059285163879395
즉, 첫 번째 쿼리가 두 번째 쿼리에 비해 훨씬 느립니다.
첫 번째 질문을 코멘트하면TestClassquery)는 다음과 같은 출력을 받습니다.
0 0.0
1 0.0
2 1.0183587074279785
즉, Test Customer 쿼리가 갑자기 느려진 것입니다.두 모델 모두 1개의 필드만 있습니다(nameCharField 입니다).
왜 첫 번째 질문은 항상 더 느릴까요?디버깅을 비활성화해 봤지만 별 차이가 없습니다.Django를 무시하고 직접 쿼리를 실행하면 즉시 실행됩니다.
SELECT `customers_testcustomer`.`id`,
`customers_testcustomer`.`name`
FROM `customers_testcustomer`
WHERE `customers_testcustomer`.`name` = 'test';
/* Affected rows: 0 Found rows: 1 Warnings: 0 Duration for 1 query: 0,000 sec. */
설정에 따라 요청이 완료된 후 데이터베이스에 대한 연결이 닫힐 수 있습니다.가 로 설정되어 있는 경우는, 다음과 같습니다.0따라서 요청마다 새로운 연결을 설정해야 합니다.
예를 들어 다음과 같이 설정할 수 있습니다.CONN_MAX_AGE로.60이를 통해 이전 요청에 의해 열린 연결을 재사용할 수 있으므로 이 오버헤드를 피할 수 있습니다.서버의 첫 번째 쿼리는 여전히 약간 느릴 수 있지만 다음 요청의 쿼리는 일반적으로 더 빠릅니다.
언급URL : https://stackoverflow.com/questions/56930408/first-query-in-django-is-always-slow
'source' 카테고리의 다른 글
| Android에서 HTTP GET 요청에 매개 변수를 추가하는 방법은 무엇입니까? (0) | 2022.11.12 |
|---|---|
| C/C++: 정수 이외의 스위치 (0) | 2022.11.12 |
| JavaScript 한 줄 'if' 문 - 최상의 구문, 이 대체 구문? (0) | 2022.11.12 |
| JavaScript 변수가 달러 기호로 시작하는 이유는 무엇입니까? (0) | 2022.11.12 |
| 여러 조인된 테이블에서 where 구에 사용자 지정 열을 사용합니다. (0) | 2022.11.12 |