ขนาดตัวอย่างเริ่มต้นของสถิติใน SQL Server คืออะไร


12

จากMSDN :

เมื่อไม่มีการ(SAMPLE, FULLSCAN, RESAMPLE)ระบุตัวเลือกตัวอย่างเครื่องมือเพิ่มประสิทธิภาพการสืบค้นจะสุ่มตัวอย่างข้อมูลและคำนวณขนาดตัวอย่างเป็นค่าเริ่มต้น

จะระบุขนาดตัวอย่างเริ่มต้นของสถิติได้อย่างไร

ฉันผ่าน MSDN แต่ไม่พบสูตรหรือวิธีการใด ๆ ในการระบุขนาดตัวอย่างเริ่มต้น ทุกที่มีเพียงสูตรที่แสดงเพื่อทริกเกอร์การอัปเดตสถิติอัตโนมัติ ตัวชี้ใด ๆ จะเป็นประโยชน์

คำตอบ:


20

จะระบุขนาดตัวอย่างเริ่มต้นของสถิติได้อย่างไร

ฉันจะอ้างอิงจากบทความ Blogs.msdn

อัลกอริทึมสถิติการอัปเดตอัตโนมัติ:

ดังนั้นสถิติการอัปเดตอัตโนมัติจะเริ่มทำงานสำหรับการเปลี่ยนแปลงทุก ๆ 500 + 20% ในแถวตาราง แน่นอนว่าเรามีอัลกอริทึมที่ได้รับการปรับปรุงใน SQL 2012 ซึ่งก็คือ SQRT (1,000 * แถวของตาราง) ซึ่งดีกว่ามาก

เมื่อมันยิงมันจะใช้อัตราการสุ่มตัวอย่างเริ่มต้นและนี่คืออัลกอริทึมที่จะคำนวณอัตราการสุ่มตัวอย่าง

1) ถ้าตาราง <8MB มันจะอัปเดตสถิติด้วย fullscan

2) หากตาราง> 8MB จะเป็นไปตามอัลกอริทึม จะลดอัตราการสุ่มตัวอย่างเนื่องจากจำนวนแถวในตารางเพิ่มขึ้นเพื่อให้แน่ใจว่าเราไม่ได้สแกนข้อมูลมากเกินไป นี่ไม่ใช่ค่าคงที่ แต่อยู่ภายใต้การควบคุมของเครื่องมือเพิ่มประสิทธิภาพ มันไม่ได้เป็นอัลกอริทึมเชิงเส้นอย่างใดอย่างหนึ่ง

ตัวอย่าง: ถ้าเรามี 1,000,000 แถวมันจะใช้อัตราการสุ่มตัวอย่าง 30% แต่เมื่อจำนวนแถวเพิ่มขึ้นเป็น 8,000,000 มันจะลดอัตราการสุ่มตัวอย่างเป็น 10% อัตราการสุ่มตัวอย่างเหล่านี้ไม่ได้อยู่ภายใต้การควบคุมของ DBAs แต่เครื่องมือเพิ่มประสิทธิภาพจะตัดสินใจ

เพื่อทำความเข้าใจเพิ่มเติมฉันขอแนะนำให้คุณอ่าน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.