SQL Server 2008을 데이터베이스 엔진으로 사용하는 Delphi로 작성된 프로그램이 있습니다. 저는 투나노 스테이션 m5에서 제공하는 p2p 링크를 사용하고 있습니다. 프로그램 내에서 특정 쿼리를 실행하면 네트워크 모니터에 클라이언트가 6초 동안 8Mb/초로 서버에서 일부 데이터를 가져오는 것으로 표시됩니다.
또한 이더넷 케이블을 통해 클라이언트를 서버에 직접 연결하고 동일한 쿼리를 실행하면 동일한 데이터를 가져오지만 더 빠릅니다(단 2초 동안 20mb/초로 데이터를 가져옵니다.)하지만 서버에서 클라이언트로 대용량 파일을 복사하면 최대 55Mb/초로 복사됩니다.
클라이언트 응용 프로그램이 실제 네트워크 대역폭보다 너무 느리게 실행되기 때문에 귀찮습니다. SQL Server가 최대 네트워크 대역폭을 사용하도록 강제하는 방법이 있는지 알고 싶습니다.
tcp/ip 네트워크 프로토콜이 활성화된 상태에서 실행되는 Windows Server 2012 R2 및 SQL Server 2008, 8GB DDR 3 및 160GB SSD 및 기가비트 NIC를 갖춘 100MB 전이중 네트워크 서버 코어 i5
답변1
파일을 전송하는 것과 같은 속도를 얻을 수는 없지만 더 빨라질 수 있기를 바랍니다.
SQL 프로파일러를 사용하여 데이터베이스에 대한 쿼리를 기록합니다. 결과를 살펴보고 프로그램이 기본 쿼리와 함께 불필요한 쿼리를 보내지 않는지 확인하세요. 대기 시간으로 인해 속도가 느려질 수 있습니다. 이상적으로는 연결과 하나의 쿼리만 보고 싶습니다.
또한 Delphi 프로그램을 변경할 수 있습니까? 가능하다면 연결 풀링을 사용하고 있는지 확인하세요. (연결을 한 번 생성하고 쿼리가 필요할 때 재사용) SQL 연결 자체에는 약 16개의 패킷 교환이 필요하며, 여기에 대기 시간을 곱하면 합산될 수 있습니다. 대기 시간이 100ms라고 가정하면 연결을 완료하는 데 1.6초가 걸릴 수 있습니다.