
내 표현이 완전히 정확하지 않다면 사과드립니다. 저는 이 모든 것에 대해 아주 새로운 것입니다.
목표:데이터베이스에서 데이터를 가져오는 속도를 향상시키려고 합니다.
설정:
저는 서버 A에서 DB를 호스팅하고 있습니다. DB는 www와 같은 웹사이트를 통해서도 액세스할 수 있습니다. mydbweb . com(실제 웹사이트 ofc가 아님). 서버 측에서의 이러한 액세스는 Nginx를 통해 발생하며 localhost:1234
.
질문:서버에 로그인하여 웹사이트(예: )를 통해 DB에 요청하면 www.mydbweb.com
네트워크를 통해 데이터를 가져오지만(그렇죠?) 직접 요청하면 localhost:1234
데이터가 전달되지 않는다는 뜻인가요? 네트워크?
일반적으로 네트워크를 통해 가져오는 데이터를 건너뛰는 방법이 있었나요? 네트워크가 대규모 데이터 쿼리에 대해 일종의 대기 시간이나 병목 현상을 유발한다고 생각합니다.
답변1
OS 및 네트워크 구성에 따라 조금씩 다르지만 일반적으로 서버의 외부 IP 주소 또는 로컬 호스트/루프백 IP 주소와 통신하는 데 큰 속도 차이는 없습니다. 일반적으로 운영 체제와 네트워크 스택이 이를 인식하기 때문입니다. 외부 IP 주소도 "이 시스템"이며 패킷은 유선으로 나가지 않고 메모리에 남아 있습니다.
그러나 애플리케이션과 데이터베이스 사이의 경로에 있는 nginx의 추가 추상화 계층은 두 가지가 직접 통신하는 것에 비해 대기 시간을 추가합니다.
애플리케이션을 데이터베이스에 연결하는 가장 빠른 방법(둘 다 동일한 호스트에서 실행 중인 경우)은 Unix 소켓(Linux 또는 유사한 Unix OS에서 실행되는 데이터베이스의 경우) 또는 이와 유사한 직접 연결을 사용하는 것입니다. 이러한 연결을 사용하면 요청과 응답을 네트워크 패킷에 캡슐화할 필요가 없습니다.