ฉันค่อนข้างจะเป็น DBA ใหม่และฉันกำลังจัดการอินสแตนซ์ SQL Server 2012 ที่มีจำนวนกิจกรรมพอสมควร ฉันกำลังทำงานในโหมดการกู้คืนเต็มเพราะเราต้องการการกู้คืนเวลา
ตอนนี้ฉันกำลังสำรองข้อมูลทั้งหมดของฐานข้อมูลและบันทึกทุกวันเวลาตีห้า ไฟล์บันทึกบางไฟล์มีขนาดสูงถึง 300GB และแม้หลังจากทำการสำรองข้อมูลไฟล์ก็จะไม่ลดขนาดลง ฉันสามารถทำให้พวกเขาลดขนาดได้โดยใช้สิ่งที่คล้ายกับ:
BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn';
DBCC ShrinkFile([db1_log], 0);
BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn';
DBCC ShrinkFile([db1_log], 0);
BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn';
DBCC ShrinkFile([db1_log], 0);
เมื่อฉันตรวจสอบ LSN ของไฟล์สำรองข้อมูลฉันเห็นสิ่งที่ชอบ:
RESTORE headeronly FROM DISK = N'\\server\share\db1_log1.trn'
FirstLSN: 15781000014686200001
SecondLSN: 15802000000665000001
RESTORE headeronly FROM DISK = N'\\server\share\db1_log2.trn'
FirstLSN: 15802000000665000001
SecondLSN: 15805000000004100001
RESTORE headeronly FROM DISK = N'\\server\share\db1_log3.trn'
FirstLSN: 15805000000004100001
SecondLSN: 15808000000004200001
ฉันไม่เชื่อว่าฉันทำลายบันทึกของฉันโดยการลดขนาดแฟ้มบันทึก เมื่ออ่านถึงเรื่องนี้ฉันเชื่อว่าฉันกำลังทำร้ายประสิทธิภาพการทำงานของฉันเพราะไฟล์บันทึกย่อเหล่านั้นจะต้องเติบโตขึ้นเอง
คำถาม:
- เหตุใดไฟล์บันทึกจึงไม่ลดลงหลังจากสำรองข้อมูล เป็นเพราะมีการทำธุรกรรมที่ปราศจากข้อผูกมัด?
- ตอนแรกฉันคิดว่าฉันควรลดขนาดไฟล์บันทึกหลังจากการสำรองข้อมูลทุก ๆ 5:00 AM หลังจากอ่านเกี่ยวกับวิธีที่ไม่ดีต่อประสิทธิภาพตอนนี้ฉันเชื่อว่าฉันจำเป็นต้องสำรองข้อมูลบันทึกประจำทุกสองสามชั่วโมงในระหว่างวัน ถูกต้องหรือไม่
- การสำรองข้อมูลเต็มรูปแบบตามปกติของฉันของฐานข้อมูล / บันทึกเกิดขึ้นทุกวันเวลา 5:00 น. และบางครั้งใช้เวลา 3 ชั่วโมง หากฉันกำหนดเวลาการสำรองข้อมูลบันทึกให้เกิดขึ้นทุก ๆ ชั่วโมงจะเกิดอะไรขึ้นเมื่อข้อมูลสำรองบันทึกทำงานกับข้อมูลสำรองแบบ 5:00 AM