สถิติในคลังข้อมูล Fabric
นําไปใช้กับ:✅ จุดสิ้นสุดการวิเคราะห์ SQL และ Warehouse ใน Microsoft Fabric
คลังสินค้าใน Microsoft Fabric ใช้กลไกจัดการคิวรีเพื่อสร้างแผนการดําเนินการสําหรับคิวรี SQL ที่ระบุ เมื่อคุณส่งคิวรี ตัวปรับให้เหมาะสมคิวรีจะพยายามระบุแผนที่เป็นไปได้ทั้งหมดและเลือกผู้สมัครที่มีประสิทธิภาพมากที่สุด หากต้องการตรวจสอบว่าแผนใดต้องการค่าใช้จ่ายขั้นต่ํา (I/O, CPU, หน่วยความจํา) กลไกจัดการจําเป็นต้องสามารถประเมินปริมาณงานหรือแถวที่อาจได้รับการประมวลผลที่ตัวดําเนินการแต่ละตัว จากนั้นโดยยึดตามต้นทุนของแต่ละแผน จะเลือกหนึ่งรายการที่มีจํานวนงานโดยประมาณน้อยที่สุด สถิติเป็นวัตถุที่มีข้อมูลที่เกี่ยวข้องเกี่ยวกับข้อมูลของคุณ เพื่ออนุญาตให้ตัวปรับปรับคิวรีเหมาะสมเพื่อประมาณค่าใช้จ่ายเหล่านี้
วิธีการใช้สถิติ
เพื่อให้ได้ประสิทธิภาพการทํางานของคิวรีที่ดีที่สุด สิ่งสําคัญคือต้องมีสถิติที่ถูกต้อง ในขณะนี้ Microsoft Fabric สนับสนุนเส้นทางต่อไปนี้เพื่อให้สถิติที่เกี่ยวข้องและทันสมัย:
- สถิติที่ผู้ใช้กําหนดเอง
- ผู้ใช้ จะใช้ไวยากรณ์ ภาษากําหนดโครงสร้างข้อมูล (DDL) ด้วยตนเองเพื่อสร้าง อัปเดต และปล่อยสถิติตามความจําเป็น
- สถิติอัตโนมัติ
สถิติด้วยตนเองสําหรับตารางทั้งหมด
ตัวเลือกดั้งเดิมของการบํารุงรักษาสุขภาพสถิติมีอยู่ใน Microsoft Fabric ผู้ใช้สามารถสร้าง อัปเดต และวางสถิติคอลัมน์เดียวที่ใช้ฮิสโทแกรมด้วยสร้างสถิติ อัปเดตสถิติ และ DROP STATISTICS ตามลําดับ นอกจากนี้ ผู้ใช้ยังสามารถดูเนื้อหาของสถิติแบบคอลัมน์เดียวที่ใช้ฮิสโทแกรมด้วย SHOW_STATISTICS DBCC ได้ ขณะนี้ ได้รับการสนับสนุนคําสั่งเหล่านี้เวอร์ชันจํากัด
- ถ้าสร้างสถิติด้วยตนเอง พิจารณาการมุ่งเน้นคอลัมน์ที่ใช้บ่อยในปริมาณงานคิวรีของคุณ (โดยเฉพาะในกลุ่ม BYs, ORDER BYs, ตัวกรอง และ JOINs)
- พิจารณาการอัปเดตสถิติระดับคอลัมน์เป็นประจําหลังจากการเปลี่ยนแปลงข้อมูลที่มีการเปลี่ยนแปลงจํานวนแถวหรือการกระจายข้อมูลอย่างมีนัยสําคัญ
ตัวอย่างของการบํารุงรักษาสถิติด้วยตนเอง
เมื่อต้องการสร้างสถิติในตาราง dbo.DimCustomer
โดยยึดตามแถวทั้งหมดในคอลัมน์ CustomerKey
:
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:
- มุมมองแค็ตตาล็อก sys.stats
- มุมมองแค็ตตาล็อก sys.stats_columns
- ฟังก์ชันระบบ STATS_DATE
สถิติอัตโนมัติที่คิวรี
เมื่อใดก็ตามที่คุณออกคิวรีและตัวปรับให้เหมาะสมคิวรีจําเป็นต้องมีสถิติสําหรับการสํารวจแผน Microsoft Fabric จะสร้างสถิติเหล่านั้นโดยอัตโนมัติหากยังไม่มีอยู่ เมื่อสร้างสถิติแล้ว ตัวปรับคิวรีให้เหมาะสมสามารถใช้ประโยชน์จากการประมาณค่าใช้จ่ายแผนของการทริกเกอร์คิวรีได้ นอกจากนี้ ถ้ากลไกจัดการคิวรีกําหนดว่าสถิติที่มีอยู่ซึ่งเกี่ยวข้องกับการคิวรีไม่สะท้อนข้อมูลอย่างถูกต้องอีกต่อไป สถิติเหล่านั้นจะถูกรีเฟรชโดยอัตโนมัติ เนื่องจากการดําเนินการอัตโนมัติเหล่านี้เสร็จสิ้นแบบซิงโครนัส คุณสามารถคาดหวังระยะเวลาคิวรีที่จะรวมเวลานี้หากสถิติที่จําเป็นยังไม่มีอยู่หรือมีการเปลี่ยนแปลงข้อมูลที่สําคัญตั้งแต่การรีเฟรชสถิติครั้งล่าสุด
ตรวจสอบสถิติอัตโนมัติในเวลาที่ทําการคิวรี
มีหลายกรณีที่คุณสามารถคาดหวังสถิติอัตโนมัติบางชนิด โดยทั่วไปมากที่สุดคือสถิติตามฮิสโทแกรมซึ่งได้รับการร้องขอโดยตัวปรับให้เหมาะสมคิวรีสําหรับคอลัมน์ที่อ้างอิงใน GROUP BYs, JOINs, DISTINCT ส่วนคําสั่ง ตัวกรอง (ส่วนคําสั่ง WHERE) และ ORDER BYs ตัวอย่างเช่น ถ้าคุณต้องการดูการสร้างสถิติเหล่านี้โดยอัตโนมัติ คิวรีจะทริกเกอร์การสร้างถ้าสถิติ 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');
ค่า Updated
ในชุดผลลัพธ์ของ SHOW_STATISTICS DBCC ควรเป็นวันที่ (ใน UTC) ที่คล้ายกับเมื่อคุณเรียกใช้คิวรี GROUP BY เดิม
จากนั้น สามารถใช้ประโยชน์สถิติที่สร้างขึ้นโดยอัตโนมัติเหล่านี้ในคิวรีที่ตามมาโดยกลไกจัดการคิวรีเพื่อปรับปรุงต้นทุนและประสิทธิภาพการดําเนินการของแผน ถ้ามีการเปลี่ยนแปลงเกิดขึ้นในตารางมากพอ กลไกจัดการคิวรีจะรีเฟรชสถิติเหล่านั้นเพื่อปรับปรุงการปรับคิวรีให้เหมาะสม สามารถใช้แบบฝึกหัดตัวอย่างก่อนหน้านี้เดียวกันหลังจากเปลี่ยนตารางอย่างมาก ใน Fabric กลไกการคิวรี SQL ใช้เกณฑ์การคอมไพล์เดียวกันกับ SQL Server 2016 (13.x) เพื่อรีเฟรชสถิติ
ชนิดของสถิติที่สร้างขึ้นโดยอัตโนมัติ
ใน Microsoft Fabric มีสถิติหลายประเภทที่สร้างขึ้นโดยอัตโนมัติโดยเครื่องมือเพื่อปรับปรุงแผนคิวรี ในปัจจุบันสามารถพบได้ใน sys.stats แม้ว่าจะไม่สามารถดําเนินการได้ทั้งหมด:
- สถิติฮิสโทแกรม
- สร้างต่อคอลัมน์ที่ต้องการสถิติฮิสโทแกรมในเวลาที่ทําการคิวรี่
- วัตถุเหล่านี้ประกอบด้วยข้อมูลฮิสโทแกรมและความหนาแน่นเกี่ยวกับการกระจายของคอลัมน์เฉพาะ คล้ายกับสถิติที่สร้างขึ้นโดยอัตโนมัติในเวลาการคิวรีในพูลเฉพาะของ Azure Synapse Analytics
- ชื่อเริ่มต้นด้วย
_WA_Sys_
- คุณสามารถดูเนื้อหาด้วย SHOW_STATISTICS DBCC
- สถิติความยาวคอลัมน์โดยเฉลี่ย
- สร้างขึ้นสําหรับคอลัมน์อักขระตัวแปร (varchar) มากกว่า 100 ที่ต้องการความยาวคอลัมน์เฉลี่ยในเวลาการคิวรี
- วัตถุเหล่านี้ประกอบด้วยค่าที่แสดงขนาดแถวเฉลี่ยของคอลัมน์ varchar ในเวลาที่สร้างสถิติ
- ชื่อเริ่มต้นด้วย
ACE-AverageColumnLength_
- ผู้ใช้ไม่สามารถดูเนื้อหาได้ และสามารถสร้างขึ้นใหม่ได้
- สถิติคาร์ดินาลลิตี้แบบยึดตาราง
- สร้างต่อตารางที่ต้องการการประมาณคาร์ดินาลลิตี้ที่ querytime
- วัตถุเหล่านี้ประกอบด้วยการประมาณจํานวนแถวของตาราง
- ตั้งชื่อแล้ว
ACE-Cardinality
- ผู้ใช้ไม่สามารถดูเนื้อหาได้ และสามารถสร้างขึ้นใหม่ได้
ข้อจำกัด
- เฉพาะสถิติฮิสโทแกรมคอลัมน์เดียวเท่านั้นที่สามารถสร้างและปรับเปลี่ยนด้วยตนเองได้
- การสร้างสถิติแบบหลายคอลัมน์ไม่ได้รับการสนับสนุน
- ออบเจ็กต์สถิติอื่น ๆ อาจปรากฏใน sys.stats นอกเหนือจากสถิติที่สร้างขึ้นด้วยตนเองและสถิติที่สร้างขึ้นโดยอัตโนมัติ วัตถุเหล่านี้จะไม่ใช้สําหรับการปรับคิวรีให้เหมาะสม