แชร์ผ่าน


สถิติในคลังข้อมูล 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:

สถิติอัตโนมัติที่คิวรี

เมื่อใดก็ตามที่คุณออกคิวรีและตัวปรับให้เหมาะสมคิวรีจําเป็นต้องมีสถิติสําหรับการสํารวจแผน 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 นอกเหนือจากสถิติที่สร้างขึ้นด้วยตนเองและสถิติที่สร้างขึ้นโดยอัตโนมัติ วัตถุเหล่านี้จะไม่ใช้สําหรับการปรับคิวรีให้เหมาะสม