기본적으로 제한은 CPU, 메모리 및 디스크 사용량에 따라 달라집니다. 따라서 스로틀 링에 대한 인덱스의 영향은 리소스에 미치는 영향까지로 귀결됩니다. 그래서 이것은 실제로 다른 성능 튜닝 시나리오와 같습니다. 어떤 한계를 치는지 알아 내고, 적은 것을 사용하는 방법을 결정하십시오.
SQL Azure는 모든 멋진 DMV에 대한 액세스 권한이 없기 때문에 주로 SQL Server와 다릅니다. 당신은 여전히 일부는 얻지 만 전부는 아닙니다. 당신이 얻게되는 장점 중 하나는 조절 오류가 발생하면 어떤 리소스를 조절하고 있는지 알려주는 것입니다.
상황에 따라 다음 쿼리가 도움이 될 수 있습니다. 나는 이것을 Glenn Berry에서 훔쳤습니다. 나의 유일한 기여는 Azure에서 실행된다는 것입니다. 그는 Azure가 아닌 설치에 집중하고 있지만 SQL 성능 작업에 대한 많은 조언을 받고 있습니다.
--List query plans and stats ordered by last execution time
SELECT TOP(50) q.text, s.last_execution_time, s.execution_count, s.total_worker_time,
s.max_elapsed_time, s.max_worker_time, (s.total_worker_time/s.execution_count) AS AverageExecutionTime,
s.max_physical_reads, s.max_logical_reads,
s.max_logical_writes, s.min_rows, s.max_rows
FROM sys.dm_exec_query_stats as s
cross apply sys.dm_exec_sql_text(plan_handle) AS q
ORDER BY s.last_execution_time DESC
--List query plans and stats ordered by average execution time
SELECT TOP(50) q.text, s.last_execution_time, s.execution_count, s.total_worker_time,
s.max_elapsed_time, s.max_worker_time, (s.total_worker_time/s.execution_count) AS AverageExecutionTime,
s.max_physical_reads, s.max_logical_reads,
s.max_logical_writes, s.min_rows, s.max_rows
FROM sys.dm_exec_query_stats as s
cross apply sys.dm_exec_sql_text(plan_handle) AS q
ORDER BY [AverageExecutionTime] DESC
--Get 50 most I/O intensive queries
SELECT TOP(50) OBJECT_NAME(qt.objectid) AS [SP Name],
qs.total_logical_writes,
qs.total_logical_reads,
(qs.total_logical_reads + qs.total_logical_writes) /qs.execution_count AS [Avg IO],
SUBSTRING(qt.[text],qs.statement_start_offset/2,
(CASE
WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), qt.[text])) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) AS [Query Text],
qs.execution_count,
qs.creation_time
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.[dbid] = DB_ID()
ORDER BY [Avg IO] DESC OPTION (RECOMPILE);
--Get executing requests
SELECT session_id, blocking_session_id, wait_type, last_wait_type, wait_time, total_elapsed_time, cpu_time, logical_reads, reads, writes
FROM sys.dm_exec_requests AS r
ORDER BY wait_time DESC
조절 벽에 대한 정보를 좀 더 제공 하시겠습니까? 인스턴스 당 초당 120 회의 삽입을 언급하셨습니다 * 이것은 여러 인스턴스에서 초당 총 삽입 수가 120을 초과한다는 것을 의미합니까? 전반적으로 어디에서 토핑하고 있습니까? 또한, 어떤 크기의 계산 인스턴스를 사용하고 있습니까? –
또한 : 얼마나 많은 스레드가 삽입물을 처리하고 있습니까? 단일 스레드 인 경우 삽입 비율은 삽입의 직렬 속성에 따라 제한 될 수 있습니다. –
우리는 부하가 걸린 상태에서 시스템을 스트레스 테스트했습니다. 이 구성은 분할되지 않습니다. 하나의 SQL Azure 인스턴스에 대한로드 제한을 배우려고합니다. 프런트 엔드의 경우이 구성에는 2 개의 추가 웹 사이트 역할이 있습니다. 그것은 모두 SQL Server에서 조절과 관련된 것입니다. 여기서 웹 역할 인스턴스 크기는 중요하지 않습니다 (IMO). 우리는 최대 300 개의 동시 요청을 테스트했습니다.이제는 테이블 축소, 인덱스/제약 조건 제거, 클러스터링 키의 기본값 제공 등과 같은 전략을 통해 SQL Azure 인스턴스에서 얼마나 많은 성능이 압축 될지 알아 봅니다. –