รับการบันทึกขั้นต่ำเมื่อโหลดข้อมูลลงในตารางชั่วคราว


10

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

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

เป็นตารางชั่วคราวที่เป็นตัวเลือกสำหรับการบันทึกขั้นต่ำและถ้าเป็นเช่นนั้นมันก็คุ้มที่จะเพิ่ม TABLOCK hint ตามที่แนะนำสำหรับตารางถาวรหรือไม่

คำตอบ:


18

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

ไม่ตารางชั่วคราวภายในเครื่อง ( #temp) เป็นส่วนตัวของเซสชันการสร้างดังนั้นจึงไม่จำเป็นต้องมีคำใบ้สำหรับล็อคตาราง คำแนะนำการล็อคตารางจะต้องใช้สำหรับตารางชั่วคราวทั่วโลก ( ##temp) หรือตารางปกติ ( dbo.temp) ที่สร้างขึ้นtempdbเนื่องจากสามารถเข้าถึงได้จากหลายเซสชัน

โปรดทราบว่าแม้ว่าจะไม่ได้ใช้การเพิ่มประสิทธิภาพการบันทึกขั้นต่ำแบบเต็ม แต่ตารางที่สร้างขึ้นtempdbได้รับประโยชน์จากการเพิ่มประสิทธิภาพอื่น ๆ เช่นไม่จำเป็นต้องบันทึกREDOข้อมูล sys.fn_dblogคุณสามารถทดสอบเพื่อดูว่าแถวหรือหน้าเว็บที่มีการลงทะเบียนโดยใช้ที่ไม่มีเอกสาร LOP_INSERT_ROWSปกติการเข้าสู่ระบบที่จะบันทึกแถวเข้าสู่ระบบเช่น


โปรดทราบว่าการเพิ่มTABLOCKลงในตารางชั่วคราวในตัวเครื่องนั้นจำเป็นต้องทำการประมวลผลแบบขนานด้วยINSERT...SELECTแบบสอบถามใน SQL Server 2016 ดูบทความฐานความรู้ของ Microsoft:

ประสิทธิภาพต่ำเมื่อคุณเรียกใช้ INSERT .. การดำเนินการที่เลือกใน SQL Server 2016

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