สถิติของ SQL Server ถูกเก็บไว้ในฐานข้อมูลหรือบัฟเฟอร์พูลหรือไม่?


10

แค่สงสัยว่าสถิติเก็บอยู่ในฐานข้อมูล แต่ไม่ได้อยู่ในหน่วยความจำ? ถ้าฉันสำรอง / กู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ prod ไปยังเซิร์ฟเวอร์การพัฒนามันจะเก็บสถิติเดียวกันเพื่อให้แผนการดำเนินการจะไม่แตกต่างกันมากหากฉันทำบนเซิร์ฟเวอร์การพัฒนาหรือไม่

คำตอบ:


15

บัฟเฟอร์พูลเป็นแคชของฐานข้อมูล ไม่เคยมี 'หรือ' สิ่งต่าง ๆ ที่อยู่ในบัฟเฟอร์พูลยังอยู่ในฐานข้อมูลเสมอ และสิ่งใดก็ตามที่อ่านจากฐานข้อมูลจะต้องอยู่ในบัฟเฟอร์พูลชั่วคราว

สำหรับคำถาม: สถิติอยู่ในฐานข้อมูลดังนั้นการสำรอง / กู้คืนจะเก็บรักษาสถิติไว้

โปรดทราบว่าการเก็บรักษาสถิติไม่ได้รับประกันว่าจะวางแผนการทำซ้ำได้ ปัจจัยอื่น ๆ ที่มีผลต่อการสร้างแผนเช่นจำนวนของ CPU และจำนวนแรม


ตกลงทำให้รู้สึก ขอขอบคุณสำหรับการชี้แจง!
Joy Walker

9

3

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

SQL Server รู้สถิติประเภทอื่นสถิติที่ให้ข้อมูลเกี่ยวกับพฤติกรรมล่าสุด

ตัวอย่างเช่น DMVs ys.dm_db_index_usage_statsและsys.dm_db_index_operational_statsส่งคืนสถิติเกี่ยวกับวิธีการใช้ดัชนี

สถิติเหล่านั้นถูกเก็บไว้ในหน่วยความจำเท่านั้น การหลงทางในการรีสตาร์ทเซิร์ฟเวอร์และไม่ได้สำรองข้อมูลไว้

อย่างไรก็ตามเครื่องมือเพิ่มประสิทธิภาพไม่ได้ใช้สิ่งเหล่านี้เพื่อสร้างแผนอย่างใดอย่างหนึ่ง


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