이벤트
3월 31일 오후 11시 - 4월 2일 오후 11시
궁극적인 Microsoft Fabric, Power BI, SQL 및 AI 커뮤니티 주도 이벤트입니다. 2025년 3월 31일부터 4월 2일까지.
지금 등록적용 대상:✅ Microsoft Fabric의 SQL 분석 엔드포인트 및 웨어하우스
Microsoft Fabric의 웨어하우스는 쿼리 엔진을 사용하여 지정된 SQL 쿼리에 대한 실행 계획을 만듭니다. 쿼리를 제출할 때 쿼리 최적화 프로그램은 가능한 모든 계획을 열거하고 가장 효율적인 후보를 선택하려고 합니다. 최소 오버헤드(I/O, CPU, 메모리)가 필요한 계획을 결정하려면 엔진이 각 연산자에서 처리될 수 있는 작업량 또는 행의 양을 평가할 수 있어야 합니다. 그런 다음 각 계획의 비용에 따라 예상 작업량이 가장 적은 계획을 선택합니다. 통계는 쿼리 최적화 프로그램에서 이러한 비용을 예측할 수 있도록 데이터에 대한 관련 정보를 포함하는 개체입니다.
최적의 쿼리 성능을 얻으려면 정확한 통계를 사용하는 것이 중요합니다. Microsoft Fabric은 현재 관련 및 최신 통계를 제공하기 위해 다음 경로를 지원합니다.
통계 상태를 유지하는 기존의 옵션은 Microsoft Fabric에서 사용할 수 있습니다. 사용자는 각각 CREATE STATISTICS, UPDATE STATISTICS 및 DROP STATISTICS를 사용하여 히스토그램 기반 단일 열 통계를 만들고, 업데이트하고, 삭제할 수 있습니다. 사용자는 DBCC SHOW_STATISTICS 히스토그램 기반 단일 열 통계의 내용을 볼 수도 있습니다. 현재 이러한 문의 제한된 버전이 지원됩니다.
열 CustomerKey
의 모든 행을 기반으로 dbo.DimCustomer
테이블에 대한 통계를 만들려면 다음을 수행합니다.
CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;
대규모 데이터 업데이트 후 통계 개체 DimCustomer_CustomerKey_FullScan
을(를) 수동으로 업데이트하려면 다음을 수행합니다.
UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;
통계 개체에 대한 정보를 표시하기
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");
통계 개체의 히스토그램에 대한 정보만 표시하기
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;
통계 개체 DimCustomer_CustomerKey_FullScan
을(를) 수동으로 삭제하기
DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;
다음 T-SQL 개체를 사용하여 Microsoft Fabric에서 수동으로 만들고 자동으로 만든 통계를 확인할 수도 있습니다.
쿼리 및 쿼리 최적화 프로그램에서 계획 탐색에 대한 통계가 필요할 때마다 Microsoft Fabric은 해당 통계가 아직 없는 경우 자동으로 해당 통계를 만듭니다. 통계가 만들어지면 쿼리 최적화 프로그램에서 이를 활용하여 트리거 쿼리의 계획 비용을 예측할 수 있습니다. 또한 쿼리 엔진에서 쿼리와 관련된 기존 통계가 더 이상 데이터를 정확하게 반영하지 않는다고 판단하면 해당 통계가 자동으로 새로 고쳐집니다. 이러한 자동 작업은 동기적으로 수행되므로 필요한 통계가 아직 없거나 마지막 통계 새로 고침 이후 중요한 데이터 변경이 발생한 경우 쿼리 기간이 이 시간을 포함할 것으로 예상할 수 있습니다.
일부 유형의 자동 통계를 예상할 수 있는 다양한 경우가 있습니다. 가장 일반적인 통계는 GROUP BYs, JOIN, DISTINCT 절, 필터(WHERE 절) 및 ORDER BY에서 참조되는 열에 대한 쿼리 최적화 프로그램에서 요청하는 히스토그램 기반 통계입니다. 예를 들어 이러한 통계의 자동 생성을 확인하려고 할 때, COLUMN_NAME
에 대한 통계가 아직 없는 경우 쿼리가 생성을 트리거합니다. 예시:
SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;
이 경우 COLUMN_NAME
에 대한 통계가 생성되어야 합니다. 열이 varchar 열인 경우 평균 열 길이 통계도 생성됩니다. 통계가 자동으로 생성되었는지 확인하려면 다음 쿼리를 실행할 수 있습니다.
select
object_name(s.object_id) AS [object_name],
c.name AS [column_name],
s.name AS [stats_name],
s.stats_id,
STATS_DATE(s.object_id, s.stats_id) AS [stats_update_date],
s.auto_created,
s.user_created,
s.stats_generation_method_desc
FROM sys.stats AS s
INNER JOIN sys.objects AS o
ON o.object_id = s.object_id
LEFT JOIN sys.stats_columns AS sc
ON s.object_id = sc.object_id
AND s.stats_id = sc.stats_id
LEFT JOIN sys.columns AS c
ON sc.object_id = c.object_id
AND c.column_id = sc.column_id
WHERE o.type = 'U' -- Only check for stats on user-tables
AND s.auto_created = 1
AND o.name = '<YOUR_TABLE_NAME>'
ORDER BY object_name, column_name;
이제 자동으로 생성된 히스토그램 통계(statistics_name
같은 것이어야 함)의 _WA_Sys_00000007_3B75D760
을(를) 찾고 T-SQL을 실행할 수 있습니다.
DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');
예시:
DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');
DBCC SHOW_STATISTICS 결과 집합의 Updated
값은 원래 GROUP BY 쿼리를 실행한 날짜와 유사한 날짜(UTC)여야 합니다.
그러면 자동으로 생성된 이러한 통계를 쿼리 엔진에서 후속 쿼리에서 활용하여 계획 비용 및 실행 효율성을 향상시킬 수 있습니다. 테이블에서 충분한 변경이 발생하면 쿼리 엔진도 해당 통계를 새로 고쳐 쿼리 최적화를 개선합니다. 표를 크게 변경한 후 이전의 동일한 샘플 연습을 적용할 수 있습니다. Fabric에서 SQL 쿼리 엔진은 SQL Server 2016(13.x)과 동일한 다시 컴파일 임계값을 사용하여 통계를 새로 고칩니다.
Microsoft Fabric에는 쿼리 계획을 개선하기 위해 엔진에서 자동으로 생성되는 여러 유형의 통계가 있습니다. 현재는 모두 실행 가능한 것은 아니지만 sys.stats에서 찾을 수 있습니다.
_WA_Sys_
(으)로 시작합니다.ACE-AverageColumnLength_
(으)로 시작합니다.ACE-Cardinality
이라고 명명됨이벤트
3월 31일 오후 11시 - 4월 2일 오후 11시
궁극적인 Microsoft Fabric, Power BI, SQL 및 AI 커뮤니티 주도 이벤트입니다. 2025년 3월 31일부터 4월 2일까지.
지금 등록