우리의 Windows Forms 응용 프로그램은 ADO.NET 및 SOAP 웹 서비스를 통해 SQL Server의보기에서 레코드를 가져 와서 데이터 그리드에 표시합니다. 상대적으로 원활하게 작동하는 ~ 25,000 개의 행을 가진 사례가 여러 번 있었지만 잠재 고객은 단일 목록에서 여러 번 그렇게해야합니다.벤치마킹을 위해 큰보기 쿼리 시뮬레이션
실제 데이터를 표시하는 대신 가상 서버에서 임의의 데이터를 보내도록 미리 시뮬레이션을 구현하고 싶습니다. . 클라이언트와 전송 측면은 거의 동일합니다. 뷰 (또는 최소한 기본 테이블)는 물론 다르게 작동합니다. 사용자는 허구 행 수를 지정합니다 (예 : 100,000).
당분간 클라이언트가 데이터를 검색하고 처리하는 데 걸리는 시간을 알고 싶습니다. 그리고 바로 표시 할 준비가되었습니다.
내가 알아 내려고하는 것은 다음과 같습니다. SQL Server에서 이러한 데이터를 보내려면 어떻게해야합니까?
해야합니까 :
- 실제 테이블을 채우기 위해 사전에 실행해야하는 저장 프로 시저를 만드시겠습니까?
- 뷰를 가리키는 함수를 생성하여 서버가 'live'데이터를 생성하도록합니까?
- 어떻게 든 기존 데이터를 복제 및/또는 임의화할 수 있습니까?
첫 번째 옵션은 현실 세계에서 가장 가까운 결과를 얻는 것처럼 나에게 들립니다. 데이터가 실제로 '물리적으로 존재하기'때문에 SELECT
쿼리는 실제 데이터와 성능면에서 매우 비슷합니다. 그러나, 그렇지 않으면 무의미한 조작으로 서버에 과세됩니다. 가짜 데이터는 하나의 동일한 데이터베이스에 저장되므로 백업됩니다. 물론 각 벤치 마크 실행 후 데이터가 삭제되지 않는 한 가짜 데이터는 백업됩니다.
두 번째 및 세 번째 옵션은 서버 에 세금을 부과하고은 실제 시뮬레이션을 실행하므로 잠재적으로 비현실적으로 느린 결과를 제공합니다.
또한 루프 나 커서를 사용하지 않고 이러한 행을 만드는 방법을 잘 모르겠습니다. foo
에 실제로 <n>
항목이있는 경우 SELECT top <n> random1(), random2(), […] FROM foo
을 사용할 수 있지만 그렇지 않은 경우에는 (분명히) foo
만큼 많은 행을 가져옵니다. GROUP BY newid()
또는 그와 비슷한 것이 트릭을 수행하지 않는 것으로 보입니다.
좋은 점. 내 글에 다시 태그를 추가했습니다. 우리는 여전히 2005 년을 사용하고 있습니다. –