บันทึกธุรกรรมจะลดขนาดโดยอัตโนมัติใน SQL Server หรือไม่


10

เมื่อฐานข้อมูล SQL Server ในโหมด SIMPLE คุณไม่ต้องสนใจเกี่ยวกับ bakcups บันทึกธุรกรรม แต่ในโหมด SIMPLE บันทึกธุรกรรมดูเหมือนว่าจะเพิ่มขึ้นเช่นเดียวกับในโหมดเต็ม มีการตัดทอนอัตโนมัติในบางช่วงเวลาหรือไม่? หรือฉันต้องตัดทอน / ย่อขนาดด้วยตนเองหรือไม่?

คำตอบ:


19

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

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

SELECT 
     db.[name] AS [Database Name]
   , db.recovery_model_desc AS [Recovery Model]
   , db.log_reuse_wait_desc AS [Log Reuse Wait Description]
   , ls.cntr_value AS [Log Size (KB)]
   , lu.cntr_value AS [Log Used (KB)]
   , CAST(
        CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT) 
        AS DECIMAL(18,2)
     ) * 100 AS [Log Used %]
   , db.[compatibility_level] AS [DB Compatibility Level]
   , db.page_verify_option_desc AS [Page Verify Option]
   , db.is_auto_create_stats_on, db.is_auto_update_stats_on
   , db.is_auto_update_stats_async_on, db.is_parameterization_forced
   , db.snapshot_isolation_state_desc, db.is_read_committed_snapshot_on
FROM sys.databases AS db
   INNER JOIN sys.dm_os_performance_counters AS lu 
     ON db.name = lu.instance_name
   INNER JOIN sys.dm_os_performance_counters AS ls 
     ON db.name = ls.instance_name
WHERE lu.counter_name LIKE N'Log File(s) Used Size (KB)%' 
   AND ls.counter_name LIKE N'Log File(s) Size (KB)%'
   AND ls.cntr_value > 0 
OPTION (RECOMPILE);

การตัดทอนบันทึกธุรกรรมอธิบายทั้งเวลาและสาเหตุที่การตัดทอนบันทึกเกิดขึ้น

หากไม่ได้ลบบันทึกการบันทึกจากบันทึกการทำธุรกรรมในที่สุดก็จะเติมพื้นที่ดิสก์ทั้งหมดที่มีอยู่ให้กับไฟล์บันทึกทางกายภาพ การตัดปลายบันทึกจะช่วยเพิ่มพื้นที่ว่างในบันทึกเชิงตรรกะโดยอัตโนมัติเพื่อนำมาใช้ซ้ำโดยบันทึกธุรกรรม

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


4

ไม่และไม่

  • มันจะไม่ย่อขนาดหรือตัดทอน (ในความหมายทางกายภาพของ LDF มันจะทำตามหลักเหตุผล)
  • มันต้องมีขนาดเท่านี้คุณจึงไม่หดมัน

หากคุณย่อขนาดรูปภาพจะขยายอีกครั้งและคุณจะมีไฟล์แยกส่วน


0

ตามที่ระบุไว้ก่อนหน้านี้ไม่มันจะไม่ย่อตัวเองโดยอัตโนมัติ มันจะทำความสะอาดขยะบางส่วน

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

เนื่องจากคุณบอกว่าคุณต้องการการกู้คืนในเวลาคุณต้องทำการสำรองข้อมูลเต็มรูปแบบและสำรองข้อมูล tlog เมื่อคุณทำการสำรองข้อมูล tlog เสร็จแล้วมันจะทำการล้างเนื้อหาของบันทึก (นอกเหนือจากปลายหาง) และเริ่มต้นใหม่

มันอาจช่วยถ้าคุณคิดว่าไฟล์เหล่านี้เป็นภาชนะ

คำแนะนำของฉันคือถ้า tlogs มีขนาดใหญ่และไม่สามารถจัดการได้ให้สำรองข้อมูลทั้งหมด สลับไปที่แบบจำลองการกู้คืนSIMPLEและSHRINKไฟล์ tlog สลับกลับไปเป็นแบบจำลองการกู้คืนเต็มรูปแบบและทำการบำรุงรักษาแฟรกเมนต์ * เช่นเดียวกับคนอื่น ๆ ที่โพสต์สิ่งนี้ไม่ใช่วิธีปฏิบัติที่ดีที่สุดและจะนำไปสู่การกระจายตัวในระดับสูง

วางแผนและเริ่มระบบการสำรองข้อมูลหลังจากนั้น


* ดัชนีสร้าง / การดำเนินการจัดระเบียบและระดับการจัดระเบียบดิสก์ นี่ไม่ใช่ส่วนหนึ่งของการบำรุงรักษาบันทึก: คุณเก็บรักษาบันทึก T ของคุณโดยสำรองข้อมูล เป็นภาชนะที่เพิ่มขึ้นเมื่อใกล้ถึงขีดความสามารถ การสร้างใหม่ / จัดระเบียบใหม่สามารถช่วยกู้คืนจากการจัดการบันทึกที่ไม่เหมาะสมนำไปสู่การใช้ไดรฟ์ขนาดใหญ่

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