2014-09-01 1 views
0

기존 응용 프로그램을 Windows Azure VM으로 이동해야합니다. 이 응용 프로그램은 많은 양의 데이터를 DB에 씁니다.디스크에 많은 양의 데이터를 쓸 때 azure vm에서 sql 서버 성능이 저하됨

그래서 Azure VM에 SQL Server 컴퓨터를 만들고 Azure VM (http://msdn.microsoft.com/en-us/library/azure/dn133149.aspx)의 SQL Server에 대한 Microsoft 모범 사례에 따라 환경을 구성했습니다.

내가 내 컴퓨터에와 푸른 VM 내 SQL 서버에 SQL 쿼리를 테스트 :

WHILE @i <= 100000 BEGIN 
INSERT INTO sales (id, created) VALUES (@i, GETDATE()); 
SET @i = @i + 1; 
END 

나는 내 컴퓨터 43 초 후에 완성 된에이 쿼리를 실행합니다. 하늘빛 VM에서이 쿼리를 실행하면 10 분 이상이 걸립니다 !!! (나는 이것을 하나의 디스크로 시도하고 2와 4 개의 디스크로 스트라이핑한다.)

나는 거래와 더 많은 시나리오 코드를 테스트하려고 :

WHILE @i <= 100000 BEGIN 

-- Start a transaction 
IF @i % 10000 = 1 
    BEGIN TRANSACTION; 

INSERT INTO sales (id) VALUES (@i); 
SET @i = @i + 1; 

-- Commit after each 10,000 row 
IF @i % 10000 = 0 
    COMMIT; 
END 

이 시나리오는 두 환경 (내 PC & 푸른 VM)에서 확인을 작동합니다.

SQL Azure VM 서버에서 SQLIO를 실행하면 트랜잭션과 함께 두 번째 쿼리 결과에 맞는 결과가 나타납니다.

내 응용 프로그램은 트랜잭션없이 실행해야합니다.

아무도 해결 방법을 알고 있습니까? 감사합니다.

+0

실제 하드웨어의 속도를 VM과 비교하는 경우이 질문은 StackOverflow에 맞지 않습니다. 아마도 ServerFault가 더 좋을 수도 있습니까? 어쨌든, 현재의 형태로는 자신의 머신이나 배치 된 VM을 위해 머신 사이징을 포함하지 않았습니다. 이 사실을 ServerFault에 게시하더라도 그것이 그대로있는 것은 확실하지 않습니다. –

+0

그리고 로그가 저장된 디스크는 어떻습니까? 단일 트랜잭션 내에서 한 번에 한 줄씩 작성하려고하면 로그에 큰 부담이 생깁니다. 어쨌든, 만약 당신이 데이터베이스에 이러한 데이터를 쓰고 싶다면, 한 번에 소스에서 데이터를 가져 오기 위해 하나의 INSERT/SELECT를 수행하는 것과 같은 더 좋은 방법이 있습니다. 아마도 실제 쿼리를 게시하면 해결할 수 있습니다. –

답변

1

100.000 삽입은 동일한 트랜잭션 내의 많은 삽입 때문에 느려질 것입니다. 대신이 방법을 사용해보십시오. 1 개의 삽입 만 있습니다 :

;WITH d as 
(
    SELECT rn 
    FROM (values(1),(2),(3),(4),(5),(6),(7),(8),(9),(0)) x(rn) 
), numbers as 
(
    SELECT 
    row_number() over (order by (select 1)) rn 
    FROM d d1,d d2,d d3,d d4,d d5 
) 
INSERT sales (id, created) 
SELECT 
    rn, 
    getdate() 
FROM 
    numbers 
+0

답변 해 주셔서 감사합니다.하지만 실제로 간단한 쿼리를 변경할 수는 없습니다. 그 이유는 응용 프로그램이 푸른 색으로 이동하여 MSSQL과 대화하기 때문입니다. Dynamic CRM API를 던지고 첫 번째 쿼리 시나리오와 함께 작업합니다. 내 컴퓨터에서 40 초가 지나면 결과가 나타나고 Azure VM은 10 분이 넘는 이유가 무엇인지 이해할 수 없습니다. –

+1

스크립트를 최적화하고 싶다면 스크립트를 다시 작성해야합니다. 잘 작성되지 않았습니다. –

+0

@ t-clausen.dk -이 질문과 관련이 없다고 생각합니다. (어쨌든 SO에 속하지 않습니다.) OP는 실제 머신을 Azure VM과 비교하지 않으며, 질문에, 그리고 왜 perf 차이가 있는지 물어보십시오. 스크립트의 내용은 부적절하며 현재 문제는 답변 할 수 없습니다. –

관련 문제