คำถามเกี่ยวกับรุ่นเก็บ tempdb


9

เราพบข้อผิดพลาดในวันนี้:

ข้อผิดพลาด: 3967, ความรุนแรง: 17

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

  • หากมีขนาดสูงสุดที่กำหนดไว้ล่วงหน้า (ขึ้นอยู่กับขนาดtempdbโดยรวมหรืออย่างอื่น) มันเป็นแบบไดนามิกหรือไม่?

  • มีการตั้งค่าที่จะทำให้เป็นแบบไดนามิกหรือไม่?

  • เราสามารถตั้งค่าการแจ้งเตือนตามสิ่งนี้ได้หรือไม่? (เช่น DMVs เพื่อใช้ติดตามขนาด ฯลฯ )

คำตอบ:


7

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

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

คุณสามารถใช้แบบสอบถามนี้เพื่อดูขนาดปัจจุบันของรุ่นเก็บใน tempdb:

SELECT *
FROM sys.dm_os_performance_counters dopc
WHERE dopc.counter_name LIKE 'Version %';

Technet มีบทความที่น่าสนใจเกี่ยวกับการใช้ที่เก็บเวอร์ชันที่https://technet.microsoft.com/en-us/library/cc966545.aspx#EDAA

หน้า MSDN นี้กล่าวถึงข้อผิดพลาด 3967:

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

ไม่มีหน้าใดที่ฉันเชื่อมโยงข้างต้นมีคำแนะนำอย่างชัดเจนเกี่ยวกับขนาดสูงสุดของรุ่นที่เก็บใน tempdb ซึ่งทำให้ฉันเชื่อว่าข้อ จำกัด เพียงอย่างเดียวคือขนาดที่กำหนดค่าสูงสุดของ tempdb เองลบด้วยพื้นที่ใดก็ตามที่ใช้ใน tempdb สำหรับ วัตถุอื่น ๆ

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