แค่สงสัยว่าสถิติเก็บอยู่ในฐานข้อมูล แต่ไม่ได้อยู่ในหน่วยความจำ? ถ้าฉันสำรอง / กู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ prod ไปยังเซิร์ฟเวอร์การพัฒนามันจะเก็บสถิติเดียวกันเพื่อให้แผนการดำเนินการจะไม่แตกต่างกันมากหากฉันทำบนเซิร์ฟเวอร์การพัฒนาหรือไม่
แค่สงสัยว่าสถิติเก็บอยู่ในฐานข้อมูล แต่ไม่ได้อยู่ในหน่วยความจำ? ถ้าฉันสำรอง / กู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ prod ไปยังเซิร์ฟเวอร์การพัฒนามันจะเก็บสถิติเดียวกันเพื่อให้แผนการดำเนินการจะไม่แตกต่างกันมากหากฉันทำบนเซิร์ฟเวอร์การพัฒนาหรือไม่
คำตอบ:
บัฟเฟอร์พูลเป็นแคชของฐานข้อมูล ไม่เคยมี 'หรือ' สิ่งต่าง ๆ ที่อยู่ในบัฟเฟอร์พูลยังอยู่ในฐานข้อมูลเสมอ และสิ่งใดก็ตามที่อ่านจากฐานข้อมูลจะต้องอยู่ในบัฟเฟอร์พูลชั่วคราว
สำหรับคำถาม: สถิติอยู่ในฐานข้อมูลดังนั้นการสำรอง / กู้คืนจะเก็บรักษาสถิติไว้
โปรดทราบว่าการเก็บรักษาสถิติไม่ได้รับประกันว่าจะวางแผนการทำซ้ำได้ ปัจจัยอื่น ๆ ที่มีผลต่อการสร้างแผนเช่นจำนวนของ CPU และจำนวนแรม
นอกจากสิ่งที่รีมัสได้กล่าวถึงผมขอแนะนำให้คุณอ่าน -
ในฐานะที่เป็นรีมัสกล่าวว่าสถิติตารางจะถูกเก็บไว้ในฐานข้อมูลคล้ายกับวัตถุอื่น ๆ เช่นตารางและดัชนี พวกเขามีบทบาทสำคัญในการเลือกแผนการดำเนินการ แต่มีปัจจัยอื่น ๆ
SQL Server รู้สถิติประเภทอื่นสถิติที่ให้ข้อมูลเกี่ยวกับพฤติกรรมล่าสุด
ตัวอย่างเช่น DMVs ys.dm_db_index_usage_stats
และsys.dm_db_index_operational_stats
ส่งคืนสถิติเกี่ยวกับวิธีการใช้ดัชนี
สถิติเหล่านั้นถูกเก็บไว้ในหน่วยความจำเท่านั้น การหลงทางในการรีสตาร์ทเซิร์ฟเวอร์และไม่ได้สำรองข้อมูลไว้
อย่างไรก็ตามเครื่องมือเพิ่มประสิทธิภาพไม่ได้ใช้สิ่งเหล่านี้เพื่อสร้างแผนอย่างใดอย่างหนึ่ง