2013-05-18 3 views
0

SQL Server 2008 R2에서 데이터를 읽는 VB.NET으로 작성된 응용 프로그램이 있습니다. 로그인 할 때 사용자는 많은 데이터베이스 파일 (드롭 다운 목록에서 사용 가능) 중 하나를 선택한 다음 사용자 이름과 암호를 입력하여 로그인하십시오. 로그인하는 동안 응용 프로그램은 선택된 데이터베이스의 테이블에서 'strings'이라는 문자열을 읽고 Do While 루프는 응용 프로그램의 작업 환경을 만들기 위해 25-30 개의 변수에 값을 입력합니다.특정 데이터베이스에서 읽기가 지연됩니다.

Do While 루프의 시작과 끝 부분에 시간 추적을 넣었습니다. 데이터베이스 중 하나에서 26 초가 걸리며 다른 값은 0 초가 걸리는 것으로 나타났습니다. 밀리 초 단위로 추적).

역설적으로 26 초가 걸린 데이터베이스의 'strings'테이블에는 125 개의 행이 있고 0 초의 데이터베이스에는 159 개의 행이 있습니다. 명백하게 코드는 동일하며 데이터베이스 구조도 진정한 복제본입니다 (두 데이터베이스는 동일한 스크립트를 사용하여 생성되었습니다).

나는 모든 가능성을 생각했지만 사용자의 로그인 시간을 지연시키는 큰 차이가 있는지 확실하지 않습니다.

내가 이것을 알아낼 수있는 방법을 좀 알려 주실 수 있습니까?

감사합니다.

답변

0

어떤 정보도없이 무슨 일이 일어나고 있는지 찾기가 어렵습니다. 약 100 개의 레코드를 반환하려면 수십 밀리 초가 더 걸리지 않아야하며 간단한 코드는 일반적으로 성능에 영향을주지 않습니다. 두 번째 서버에는 심각한 성능 문제가있는 것 같습니다.

  • 서버에 대해 SQL Server Management Studio에서 쿼리를 실행하고 느린 서버에서 CPU로드 및 여유 메모리를 확인하십시오.
  • 네트워크 성능 (ping 또는 측정 파일 다운로드 시간)을 확인하십시오.
  • 서버에서 직접 쿼리를 실행하십시오.
+0

불행히도 서버는 동일합니다. 성능 문제가있는 데이터베이스가 원래 SQL Server 2005에 구축되었음을 알게되었습니다. 나중에 SQL Server 2005 설치가 SQL Server 2008 R2로 업그레이드되었습니다. 빠른 다른 데이터베이스는 SQL Server 2008 R2 자체에서 작성되었습니다. 이것이 문제의 원인이 될 수 있습니까? –

+0

@PrashantGupta : 업그레이드 자체가 성능을 저하시키지 않을 가능성이 있습니다. 그러나 그것은 데이터베이스가 다소 오래된 것 같습니다. 그 안에있는 인덱스의 모양이 좋지 않을 수 있습니다. 색인 다시 작성 technet.microsoft.com/en-us/library/ms187874(v=sql.105).aspx를 참조하십시오. 적절한 서버 관리자에게 문의하여 데이터베이스 유지 관리를 수행하는 것이 유용 할 수 있습니다. – IvanH

0

많은 연구와 두 데이터베이스 파일 간의 비교를 통해 데이터베이스 파일 (mdf)과 로그 파일 (ldf)의 '초기 크기'가 매우 다른 것으로 나타났습니다.

빠른 데이터베이스의 mdf 및 ldf 파일은 각각 200MB 이상이었습니다. 그러나 느린 데이터베이스는 각각 11MB와 16MB였습니다. 느린 데이터베이스 파일 '초기 크기'를 Microsoft SQL Management Studio를 사용하는 빠른 데이터베이스와 동일한 값으로 변경하고 SQL Server 및 Whoa를 중지하고 시작했습니다. 성능 차이가 없습니다.

누군가가 유용하다고 생각하는 경우를 대비해 답변으로 사용하십시오.

관련 문제