สถิติฐานข้อมูลคืออะไรและฉันจะได้ประโยชน์จากพวกเขาอย่างไร


18

ฉันเคยได้ยินการพูดถึงสถิติที่ SQL Server เก็บตามค่าเริ่มต้น พวกเขากำลังติดตามอะไรและฉันจะใช้ข้อมูลนี้เพื่อปรับปรุงฐานข้อมูลของฉันได้อย่างไร

คำตอบ:


21

สถิติเป็นรูปแบบของข้อมูลเมตาแบบไดนามิกที่ช่วยให้เครื่องมือเพิ่มประสิทธิภาพการสืบค้นสามารถทำการตัดสินใจได้ดีขึ้น ตัวอย่างเช่นหากมีเพียงหนึ่งโหลแถวในตารางดังนั้นจะไม่มีประเด็นใดที่ดัชนีจะทำการค้นหา คุณจะดีขึ้นกว่าเดิมเมื่อทำการสแกนแบบเต็มตาราง แต่ถ้าตารางเดียวกันโตเป็นล้านแถวคุณอาจจะดีกว่าถ้าใช้ดัชนี แต่ถ้าคุณค้นหาตารางนั้นในคอลัมน์ที่มีค่าที่ไม่ซ้ำกันน้อยมาก (เช่นอาจเป็นคอลัมน์ "เพศ" ที่มีเฉพาะ "M" หรือ "F") จริง ๆ แล้ว FTS อาจจะดีกว่าเพราะคุณจะ จำเป็นต้องดึงข้อมูลบล็อกใหม่เพื่อสร้างชุดผลลัพธ์ ตอนนี้พูดว่าตารางของคุณคือ 99% "M" และเพียง 1% "F" เราควร FTS ในกรณีหนึ่งหรือใช้ดัชนีในอีกกรณีหนึ่ง ตารางเดียวกันแบบสอบถามเดียวกัน อาจมีแผนแบบสอบถามแตกต่างกันสี่แผนขึ้นอยู่กับเนื้อหาของตาราง สิ่งต่าง ๆ เหล่านี้คือ "สถิติ" และเป็นข้อมูลส่วนบุคคลสำหรับแต่ละฐานข้อมูล - แม้แต่สองฐานข้อมูลที่มีโครงสร้างตารางและดัชนีที่เหมือนกันจะมีสถิติที่แตกต่างกัน

โดยสรุปในเครื่องมือฐานข้อมูลที่ทันสมัยมีการเพิ่มประสิทธิภาพการค้นหาสองประเภท: การเขียน SQL ใหม่ (การเพิ่มประสิทธิภาพตามกฎเช่นคอมไพเลอร์จะเขียน C ของคุณใหม่เพื่อให้มีประสิทธิภาพมากขึ้น) และเลือกเส้นทางที่ถูกต้องของข้อมูล เช่นคอมไพเลอร์ JIT ที่ระบุฮอตสปอตที่รันไทม์) คุณเพียงแค่ต้องกังวลเกี่ยวกับสิ่งนี้หากคุณเห็นเครื่องมือเพิ่มประสิทธิภาพข้อความค้นหาทำสิ่งที่ผิดอย่างชัดเจน (เช่นเลือก FTS เมื่อคุณรู้ว่าดัชนีจะดีขึ้น)


2
+1 ฉันไม่สามารถอธิบายได้ดีไปกว่านี้แล้ว เป็นสิ่งสำคัญที่ต้องจำไว้ว่าสถิติจะมีประโยชน์เฉพาะในกรณีที่เป็นข้อมูลล่าสุด ซึ่งสามารถทำได้ด้วยสถิติการอัพเดทอัตโนมัติหรือคำสั่งสถิติการอัพเดทตามกำหนดเวลา (กลางคืน / สัปดาห์) เป็นประจำ นอกจากนี้การสร้างดัชนีใหม่จะดำเนินการอัปเดตสถิติโดยอัตโนมัติ
Matt M

5

พวกเขาจะใช้โดยเพิ่มประสิทธิภาพการค้นหา (เอกสารใน MSDN) เพื่อติดตามการกระจายของค่าในการจัดทำดัชนีและ / หรือคอลัมน์

สิ่งที่คุณกังวลเพียงอย่างเดียวคือควรอัปเดตเป็นประจำ : เพียงปล่อยให้เอ็นจิ้น DB ทำงานสิ่งนั้น


2
ไม่เสมอ. มีบางครั้งที่การสร้างสถิติด้วยตนเองสามารถช่วยให้ประสิทธิภาพของแบบสอบถามได้
mrdenny

@mrdenny: คุณทำสิ่งนี้บ่อยแค่ไหนในชีวิตจริง ไม่ค่อยมาก ฉันไม่ได้ IIRC หากต้องการสถิติเราสามารถโต้แย้งได้ว่าต้องการดัชนีซึ่งมีสถิติอยู่แล้ว คุณสามารถสร้างสถิติคอลัมน์ได้ตามสร้างสถิติเท่านั้น ให้ OP ต้องถามเกี่ยวกับสถิติที่ฉันบอกว่านี่เป็นสิ่งที่ต้องทำ
GBN

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