Data Warehouse – Thống kê trong hệ thống lưu trữ dữ liệu Fabric

Kho lưu trữ dữ liệu trong Microsoft Fabric sử dụng một trình tối ưu hóa truy vấn để tạo kế hoạch thực thi cho một truy vấn SQL cụ thể. Khi bạn gửi một truy vấn, trình tối ưu hóa truy vấn cố gắng liệt kê tất cả các kế hoạch có thể và chọn ra ứng viên hiệu suất tốt nhất. Để xác định kế hoạch nào sẽ yêu cầu ít công việc nhất (I/O, CPU, bộ nhớ), trình động cần có khả năng đánh giá số lượng công việc hoặc hàng mà có thể được xử lý tại mỗi toán tử. Sau đó, dựa trên chi phí của mỗi kế hoạch, nó chọn ra kế hoạch có chi phí ước tính ít nhất.Thống kê là các đối tượng chứa thông tin liên quan về dữ liệu của bạn, giúp trình tối ưu hóa truy vấn ước lượng các chi phí này.

Cách tận dụng số liệu thống kê

Để đạt được hiệu suất truy vấn tối ưu, việc có thống kê chính xác là rất quan trọng. Hiện nay, Microsoft Fabric hỗ trợ các cách sau để cung cấp thống kê liên quan và cập nhật:

  • Thống kê do người dùng định nghĩa
    • Người dùng thực hiện lệnh DDL (Data Definition Language) để tạo, cập nhật và xóa thống kê khi cần thiết
  • Thống kê tự động
    • Hệ thống tự động tạo và duy trì thống kê tự động khi thực hiện truy vấn

Thống kê thủ công cho tất cả các bảng

Lựa chọn truyền thống để duy trì sức khỏe thống kê có sẵn trong Microsoft Fabric. Người dùng có thể tạo, cập nhật và xóa thống kê dựa trên histogram cho một cột đơn. CREATE STATISTICS , UPDATE STATISTICSDROP STATISTICS tương ứng. Người dùng cũng có thể xem nội dung của thống kê dựa trên histogram cho một cột đơn. DBCC SHOW_STATISTICS . Hiện tại, chỉ có một phiên bản giới hạn của các câu lệnh này được hỗ trợ.

  • Nếu tạo thống kê thủ công, hãy xem xét tập trung vào những thống kê được sử dụng nhiều trong khối lượng công việc truy vấn của bạn (đặc biệt là trong các GROUP BY, ORDER BY, bộ lọc và JOIN).
  • Hãy xem xét cập nhật thống kê cấp cột thường xuyên sau các thay đổi dữ liệu mà ảnh hưởng đáng kể đến số hàng hoặc phân phối của dữ liệu.

Ví dụ về bảo trì thống kê thủ công

Để tạo thống kê trên bảng dbo.DimCustomer, dựa trên tất cả các hàng trong cột CustomerKey:

SQL

CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;

Để cập nhật thủ công đối tượng thống kê DimCustomer_CustomerKey_FullScan, có lẽ sau một cập nhật dữ liệu lớn:

SQL

UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;  

Để hiển thị thông tin về đối tượng thống kê:

SQL

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");

Để chỉ hiển thị thông tin về histogram của đối tượng thống kê:

SQL

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;

Để thả đối tượng thống kê theo cách thủ công DimCustomer_CustomerKey_FullScan:

SQL

DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;

Các đối tượng T-SQL sau đây cũng có thể được sử dụng để kiểm tra cả thống kê được tạo thủ công và tự động trong Microsoft Fabric:

Tự động thống kê trong truy vấn

Khi bạn thực hiện một truy vấn và trình tối ưu hóa truy vấn yêu cầu thống kê để khám phá kế hoạch, Microsoft Fabric sẽ tự động tạo thống kê đó nếu chúng chưa tồn tại. Sau khi thống kê đã được tạo, trình tối ưu hóa truy vấn có thể sử dụng chúng để ước lượng chi phí kế hoạch của truy vấn kích hoạt. Ngoài ra, nếu trình động truy vấn xác định rằng thống kê hiện tại liên quan đến truy vấn không còn chính xác phản ánh dữ liệu, thì thống kê sẽ được tự động làm mới. Bởi vì các hoạt động tự động này được thực hiện đồng bộ, bạn có thể mong đợi thời gian thực hiện truy vấn sẽ bao gồm thời gian này nếu thống kê cần thiết vẫn chưa tồn tại hoặc có các thay đổi dữ liệu đáng kể kể từ lần làm mới thống kê cuối cùn

Để xác nhận thống kê tự động trong thời gian truy vấn

Có nhiều trường hợp mà bạn có thể mong đợi một loại thống kê tự động. Phổ biến nhất là thống kê dựa trên histogram, được trình tối ưu hóa truy vấn yêu cầu cho các cột được tham chiếu trong các GROUP BY, JOIN, DISTINCT clauses, filters (WHERE clauses), và ORDER BYs. Ví dụ, nếu bạn muốn xem sự tạo ra tự động của những thống kê này, một truy vấn sẽ kích hoạt sự tạo ra nếu thống kê cho COLUMN_NAME vẫn chưa tồn tại. Ví dụ:

SQL

SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;

Trong trường hợp này, bạn nên mong đợi thống kê cho COLUMN_NAME đã được tạo ra. Nếu cột cũng là một cột varchar, bạn cũng sẽ thấy thống kê về độ dài trung bình của cột được tạo ra. Nếu bạn muốn xác nhận rằng thống kê đã được tạo tự động, bạn có thể chạy truy vấn sau:

SQL

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 
INNER JOIN sys.stats_columns AS sc 
ON s.object_id = sc.object_id 
AND s.stats_id = sc.stats_id 
INNER 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;

Truy vấn này chỉ xem xét thống kê dựa trên cột. Nếu bạn muốn xem tất cả thống kê tồn tại cho bảng này, hãy loại bỏ các JOIN trên sys.stats_columns và sys.columns

Bây giờ, bạn có thể tìm statistics_name của thống kê histogram được tạo tự động (có thể là một cái gì đó giống như _WA_Sys_00000007_3B75D760) và chạy câu lệnh T-SQL sau:

SQL

DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');

Ví dụ:

SQL

DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');

Giá Updatedtrị trong tập kết quả của DBCC SHOW_STATISTICS Nên là một ngày (theo giờ UTC) tương tự như khi bạn thực hiện truy vấn GROUP BY ban đầu.

Những thống kê được tạo tự động này sau đó có thể được tận dụng trong các truy vấn sau bởi trình động truy vấn để cải thiện chi phí kế hoạch và hiệu suất thực thi. Nếu có đủ thay đổi trong bảng, trình động truy vấn cũng sẽ làm mới những thống kê đó để cải thiện tối ưu hóa truy vấn. Cùng với đó, bài tập thực hành mẫu trước đó có thể được áp dụng lại sau khi thay đổi bảng một cách đáng kể. Trong Fabric, trình động truy vấn SQL sử dụng ngưỡng tái biên so với SQL Server 2016 (13.x) để làm mới thống kê.

Các loại thống kê được tạo tự động

Trong Microsoft Fabric, có nhiều loại thống kê được tự động tạo ra bởi hệ thống để cải thiện kế hoạch truy vấn. Hiện tại, chúng có thể được tìm thấy trong sys.stats mặc dù không phải tất cả đều có thể thực hiện hành động:

  • Thống kê biểu đồ
    • Tạo ra cho mỗi cột cần thống kê biểu đồ tại thời điểm truy vấn.
    • Những đối tượng này chứa thông tin biểu đồ và mật độ về phân phối của một cột cụ thể. Tương tự như các thống kê tự động được tạo ra tại thời điểm truy vấn trong các cụm dành riêng của Azure Synapse Analytics.
    • Tên bắt đầu bằng _WA_Sys_.
    • Contents can be viewed withg DBCC SHOW_STATISTICS
  • Thống kê độ dài trung bình của cột
    • Được tạo ra cho các cột ký tự biến đổi (varchar) có độ dài lớn hơn 100 cần độ dài trung bình của cột tại thời điểm truy vấn.
    • Những đối tượng này chứa một giá trị đại diện cho kích thước hàng trung bình của cột varchar tại thời điểm tạo thống kê.
    • Tên bắt đầu bằng ACE-AverageColumnLength_.
    • Nội dung không thể xem và không thể thực hiện hành động bởi người dùng.
  • Thống kê số lượng thẻ dựa trên bảng
    • Được tạo ra cho mỗi bảng cần ước lượng độ đa dạng tại thời điểm truy vấn.
    • Những đối tượng này chứa một ước lượng về số hàng của một bảng.
    • Được đặt tên là ACE-Cardinality.
    • Nội dung không thể xem và không thể thực hiện hành động bởi người dùng.
    • Nội dung không thể được xem và người dùng không thể thực hiện được.

Hạn chế

  • Chỉ có thể tạo và chỉnh sửa thống kê biểu đồ cho một cột duy nhất một cách thủ công.
  • Việc tạo thống kê đa cột không được hỗ trợ.
  • Các đối tượng thống kê khác có thể xuất hiện trong sys.stats , ngoại trừ thống kê được tạo ra thủ công và tự động. Những đối tượng này không được sử dụng cho việc tối ưu hóa truy vấn.

Nguồn: https://learn.microsoft.com/en-us/fabric/data-warehouse/statistics

spot_img

More from this stream

Recomended

Cập Nhật Google Analytics Quý 2/2024

Bài viết này cung cấp thông tin về các bản phát hành mới nhất trong Google Analytics trong quý 2 năm 2024.

[GA4] – Hiểu rõ về nguồn dữ liệu

Một nguồn dữ liệu là một nơi chứa dữ liệu bạn tải lên Analytics, bao gồm cơ sở dữ liệu, dịch vụ, hoặc tệp CSV bạn tải lên và một ánh xạ của các trường dữ liệu Analytics với các trường trong cơ sở dữ liệu, dịch vụ hoặc CSV bên ngoài của bạn.

Segment là gì?

Segment là một traditional Customer Data Platform (CDP) chuyên về việc thu thập sự kiện và kích hoạt dữ liệu.

Composable CDP là gì?

Composable CDP là một lớp kích hoạt cho phép bạn tạo ra đối tượng khán giả, điều phối hành trình, và gửi dữ liệu hiện tại của bạn đến các công cụ tiếp thị hàng đầu của bạn.

Traditional CDP và Composable CDP

Việc áp dụng rộng rãi của hệ thống lưu trữ dữ liệu đám mây đã cách mạng hóa không gian Customer Data Platform (CDP), dẫn đến sự xuất hiện của một kiến trúc CDP mạnh mẽ hơn, nguyên gốc từ hệ thống lưu trữ dữ liệu đám mây được biết đến là Composable CDP.

Customer Data Platform (CDP) là gì?

Một Customer Data Platform, hay CDP, là một giải pháp hoặc kiến trúc cho phép bạn thu thập, lưu trữ, mô hình hóa và kích hoạt dữ liệu khách hàng của bạn.