>  기사  >  백엔드 개발  >  Golang Mongo 드라이버를 사용하면 간단한 쿼리에 2초 이상 걸리는 이유는 무엇입니까?

Golang Mongo 드라이버를 사용하면 간단한 쿼리에 2초 이상 걸리는 이유는 무엇입니까?

王林
王林앞으로
2024-02-06 09:30:081156검색

为什么使用 Golang Mongo 驱动程序执行一个简单的查询需要花费 2 秒以上的时间?

질문 내용

mongo 데이터베이스로 golang 웹 서비스를 작성 중입니다. go.mongodb.org/mongo-driver v1.11.6을 사용하고 있으며 간단한 쿼리를 완료하는 데 2초 이상이 걸립니다. 데이터베이스에는 단지 테스트용으로 몇 개의 레코드만 있고 10개 이하의 레코드만 있습니다.

시간을 낭비하는 코드 부분을 찾고 있었는데 문제가 mongo 패키지에 있다는 것을 알았습니다. find, findone, insert 및 update 메소드까지 모두 완료하는 데 1~2초 이상이 소요됩니다.

몽고 클라이언트 인스턴스화입니다

으아아아

기능 코드는 다음과 같습니다.

으아아아

기능 시간 추적 결과는 다음과 같습니다.

으아아아

파이썬으로 쿼리를 테스트했는데 요청에 0.003초 밖에 걸리지 않았기 때문에 인터넷 연결과는 아무런 관련이 없습니다

패키지 버전을 변경해 보았지만 작동하지 않았습니다. 또한 동일한 결과로 프로젝트의 모든 패키지를 다시 설치해 보았습니다.

데이터베이스에 검색 색인을 생성해 보았지만 다른 결과를 얻지 못했습니다. 쿼리를 완료하는 데에도 2초 이상이 걸립니다.

쿼리를 완료하는 데 몇 밀리초 이상 걸리지 않을 것 같습니다.


정답


mongo.Connect() "only" 通过启动后台监控 goroutine 来初始化 Client. (원격) 데이터베이스에 연결할 필요가 없을 수도 있습니다.

쿼리를 실행할 때 당연히 연결을 설정해야 하며 몇 초 정도 걸릴 수 있습니다.

Client.Ping() 메소드를 사용하여 이전에 데이터베이스에 강제로 연결하고 연결이 성공적으로 생성되었는지 확인할 수 있으므로 쿼리를 실행하면 연결이 준비됩니다.

첫 번째 쿼리 후에 연결이 닫히지 않고 연결 풀에 넣어지고 다시 필요할 때 (두 번째 쿼리에) 재사용되기 때문에 동일한 쿼리를 반복해 볼 수도 있습니다.

위 내용은 Golang Mongo 드라이버를 사용하면 간단한 쿼리에 2초 이상 걸리는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제