เมื่อต้องการอัปเดตสถิติ


42

ฉันได้รับแผนการบำรุงรักษาที่ได้รับสิ่งต่อไปนี้:

  • ล้างข้อมูลเก่า
  • ตรวจสอบความสมบูรณ์ของฐานข้อมูล
  • ดำเนินการสำรองฐานข้อมูลและบันทึกธุรกรรม
  • จัดระเบียบดัชนีของเราใหม่
  • อัพเดทสถิติ
  • ลบการสำรองข้อมูลเก่าและไฟล์ Maintenance Plan

จากแผนการบำรุงรักษา 23 นาทีการอัปเดตสถิติใช้เวลา 13 นาที ในช่วงเวลา 13 นาทีนี้การเข้าถึงฐานข้อมูลถูกปิดกั้น (หรืออย่างน้อยการจำลองแบบจากฐานข้อมูลนี้ไปยังผู้อื่นของเราจะถูกหยุดชั่วคราว)

คำถามของฉันคือ:

เราควรอัปเดตสถิติเมื่อใดและเพราะเหตุใด

ดูเหมือนว่าสิ่งที่เราควรทำน้อยกว่าทุกวัน ฉันพยายามที่จะพาเราออกจาก "เพียงเพราะ" ความตั้งใจของการบำรุงรักษาที่ไม่จำเป็น


2
บ่อยครั้งที่ / วิธีการแทรก / อัพเดท / ลบแถวใด ๆ สำหรับฉันนี่เป็นปัจจัยในการตัดสินใจ
JNK

@JNK เราแทรก ~ 70,000 แถวต่อวันในฐานข้อมูลทั้งหมด อัปเดตประมาณ 100 แถวต่อเดือน
Onion-Knight

1 - สิ่งนี้มีความเกี่ยวข้องมากขึ้นถ้าเรารู้ด้วยตารางว่ามีกี่แถวและ 2 เป็นเปอร์เซ็นต์ 70k แถวต่อวันในตาราง 1m นั้นต่างจากในตาราง 500m มาก
JNK

ฉันอยากจะแนะนำให้ใช้บางอย่างเช่นola.hallengren.com/…โซลูชันนี้จะสร้าง / จัดระเบียบใหม่และอัปเดตสิ่งที่จำเป็นในแบบที่คุณอาจใช้เวลาสั้นลงในการวางแผนการบำรุงรักษาและประหยัดพื้นที่ล็อกจำนวนมาก ..
Peter

คำตอบ:


28

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

ว่าวิธีการที่คุณมักจะควรได้รับการปรับปรุงสถิติขึ้นอยู่มากเกี่ยวกับวิธีการปรับเปลี่ยนข้อมูลมากดัชนีและข้อมูลของคุณจะได้รับ หากมีการเปลี่ยนแปลงน้อยมาก ( INSERT, UPDATE, DELETE) เพื่อข้อมูลแล้วคุณอาจจะมีช่วงเวลาที่ไม่บ่อยมากขึ้นสำหรับงานสถิติการปรับปรุง

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

หากคุณกำลังใช้สถิติการอัปเดตอัตโนมัติสำหรับฐานข้อมูลของคุณให้ดูการอ้างอิงนี้สำหรับเกณฑ์ที่เมื่อมีการอัปเดตสถิติ


เราสร้างดัชนีใหม่สัปดาห์ละครั้ง
Onion-Knight

5
@ Onion-Knight จากนั้นคุณยังอัพเดทสถิติสัปดาห์ละครั้งเมื่อคุณสร้างดัชนีใหม่ นั่นอาจเพียงพอหากคุณกำลังสร้างดัชนีแบบครอบคลุมในฐานข้อมูล
Thomas Stringer

25

เมื่อต้องการอัปเดตสถิติ

ถ้าหากคุณลักษณะสถิติการอัปเดตอัตโนมัติไม่ดีพอสำหรับความต้องการของคุณ ฉันหมายความว่าถ้าสถิติการสร้างอัตโนมัติและการอัปเดตอัตโนมัติเปิดอยู่และคุณได้รับแผนการสืบค้นที่ไม่ถูกต้องเนื่องจากสถิติไม่ถูกต้องหรือเป็นปัจจุบันก็อาจเป็นความคิดที่ดีที่จะควบคุมการสร้างและอัปเดตสถิติ แต่ถ้าคุณพอใจกับประสิทธิภาพของเซิร์ฟเวอร์ sql และเวลาดำเนินการสืบค้น

ฉันขอแนะนำให้หยุดคำสั่งอัปเดตสถิติจากแผนการบำรุงรักษาของคุณ

การอัปเดตสถิติเป็นสิ่งสำคัญและมีประโยชน์ 1. ช่วยให้เครื่องมือเพิ่มประสิทธิภาพการสืบค้น SQL Server สามารถสร้างแผนการสืบค้นที่ดีอย่างสม่ำเสมอในขณะที่รักษาต้นทุนการพัฒนาและการดูแลต่ำไว้ 2. สถิติใช้โดยเครื่องมือเพิ่มประสิทธิภาพแบบสอบถามเพื่อประเมินการเลือกของนิพจน์ และผลลัพธ์แบบสอบถามสุดท้าย 3. สถิติที่ดีช่วยให้เครื่องมือเพิ่มประสิทธิภาพในการประเมินค่าใช้จ่ายของแผนแบบสอบถามที่แตกต่างกันอย่างถูกต้องแล้วเลือกแผนคุณภาพสูง


หากคุณต้องการอัปเดตสถิติด้วยตนเองคุณควรทราบก่อนว่าสถิติจะได้รับการอัปเดตอัตโนมัติเมื่อใด

หากเครื่องมือเพิ่มประสิทธิภาพแบบสอบถาม SQL Server ต้องการสถิติสำหรับคอลัมน์ใดคอลัมน์หนึ่งในตารางที่ได้รับการอัปเดตอย่างมากนับตั้งแต่ครั้งล่าสุดที่มีการสร้างหรืออัปเดตสถิติ SQL Server จะอัปเดตสถิติโดยอัตโนมัติโดยสุ่มค่าคอลัมน์ (โดยใช้สถิติการอัปเดตอัตโนมัติ) . การอัปเดตสถิติอัตโนมัติถูกเรียกใช้โดยการปรับให้เหมาะสมของแบบสอบถามหรือโดยการดำเนินการตามแผนที่รวบรวมและเกี่ยวข้องกับชุดย่อยของคอลัมน์ที่อ้างถึงในแบบสอบถาม สถิติจะได้รับการอัปเดตก่อนการรวบรวมแบบสอบถามหาก AUTO_UPDATE_STATISTCS_ASYNC ปิดอยู่

นี่คือบทความดีๆที่พูดถึงเมื่อมีการทริกเกอร์สถิติการอัพเดทในเซิร์ฟเวอร์ SQL

  1. จาก simple-talkมาตรา 13 เมื่อใดจะมีการอัพเดทอัตโนมัติเป็นสถิติ
  2. support.microsoftส่วน: ทำการตรวจสอบอัตโนมัติ
  3. ส่วนmsdn.microsoft : การดูแลรักษาสถิติใน SQL Server 2008

หลังจากทราบเมื่อมีการเรียกใช้สถิติจะช่วยให้คุณตัดสินใจว่าจะอัปเดตสถิติด้วยตนเองเมื่อใด

หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับสถิติและผลกระทบต่อประสิทธิภาพฉันขอแนะนำBrentOzarและKimberly ใน sqlskillsบล็อกและบล็อกเกอร์ที่ดีมาก

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