MS SQL Server - สถาปัตยกรรม
เราได้จำแนกสถาปัตยกรรมของ SQL Server เป็นส่วนต่างๆดังต่อไปนี้เพื่อให้เข้าใจง่าย -
- สถาปัตยกรรมทั่วไป
- สถาปัตยกรรมหน่วยความจำ
- สถาปัตยกรรมไฟล์ข้อมูล
- สถาปัตยกรรมไฟล์บันทึก
สถาปัตยกรรมทั่วไป
Client - เมื่อคำขอเริ่มต้น
Query - แบบสอบถาม SQL ซึ่งเป็นภาษาระดับสูง
Logical Units - คำหลักนิพจน์และตัวดำเนินการ ฯลฯ
N/W Packets - รหัสที่เกี่ยวข้องกับเครือข่าย
Protocols - ใน SQL Server เรามี 4 โปรโตคอล
หน่วยความจำที่ใช้ร่วมกัน (สำหรับการเชื่อมต่อภายในและวัตถุประสงค์ในการแก้ไขปัญหา)
ท่อที่มีชื่อ (สำหรับการเชื่อมต่อที่อยู่ในการเชื่อมต่อ LAN)
TCP / IP (สำหรับการเชื่อมต่อที่อยู่ในการเชื่อมต่อ WAN)
VIA-Virtual Interface Adapter (ต้องใช้ฮาร์ดแวร์พิเศษในการตั้งค่าโดยผู้ขายและเลิกใช้งานจากเวอร์ชัน SQL 2012 ด้วย)
Server - ที่ติดตั้งบริการ SQL และฐานข้อมูลอยู่
Relational Engine- นี่คือที่ที่จะดำเนินการจริง ประกอบด้วยตัวแยกวิเคราะห์แบบสอบถามเครื่องมือเพิ่มประสิทธิภาพการค้นหาและตัวดำเนินการสืบค้น
Query Parser (Command Parser) and Compiler (Translator) - สิ่งนี้จะตรวจสอบไวยากรณ์ของแบบสอบถามและจะแปลงแบบสอบถามเป็นภาษาเครื่อง
Query Optimizer - จะเตรียมแผนการดำเนินการเป็นผลลัพธ์โดยใช้แบบสอบถามสถิติและโครงสร้าง Algebrizer เป็นอินพุต
Execution Plan - เป็นเหมือนแผนงานซึ่งมีลำดับขั้นตอนทั้งหมดที่จะดำเนินการเป็นส่วนหนึ่งของการดำเนินการสืบค้น
Query Executor - นี่คือที่ที่จะดำเนินการสืบค้นทีละขั้นตอนด้วยความช่วยเหลือของแผนการดำเนินการและจะติดต่อเครื่องมือจัดเก็บข้อมูล
Storage Engine - มีหน้าที่จัดเก็บและดึงข้อมูลในระบบจัดเก็บข้อมูล (ดิสก์, SAN, ฯลฯ ), การจัดการข้อมูล, การล็อกและการจัดการธุรกรรม
SQL OS- สิ่งนี้อยู่ระหว่างเครื่องโฮสต์ (Windows OS) และ SQL Server กิจกรรมทั้งหมดที่ดำเนินการบนเครื่องมือฐานข้อมูลได้รับการดูแลโดย SQL OS SQL OS ให้บริการระบบปฏิบัติการต่างๆเช่นข้อตกลงการจัดการหน่วยความจำด้วยบัฟเฟอร์พูลบันทึกบัฟเฟอร์และการตรวจจับการหยุดชะงักโดยใช้โครงสร้างการบล็อกและการล็อก
Checkpoint Process- Checkpoint เป็นกระบวนการภายในที่เขียนเพจสกปรกทั้งหมด (หน้าที่แก้ไข) จาก Buffer Cache ไปยัง Physical disk นอกจากนี้ยังเขียนบันทึกบันทึกจากบัฟเฟอร์บันทึกไปยังไฟล์ฟิสิคัล การเขียนเพจสกปรกจากบัฟเฟอร์แคชไปยังไฟล์ข้อมูลเรียกอีกอย่างว่าการแข็งตัวของเพจสกปรก
เป็นกระบวนการเฉพาะและทำงานโดยอัตโนมัติโดย SQL Server ในช่วงเวลาที่กำหนด SQL Server รันกระบวนการตรวจสอบสำหรับแต่ละฐานข้อมูลทีละรายการ Checkpoint ช่วยลดเวลาในการกู้คืนสำหรับ SQL Server ในกรณีที่มีการปิดระบบโดยไม่คาดคิดหรือระบบขัดข้อง \ Failure
จุดตรวจใน SQL Server
ใน SQL Server 2012 มีสี่ประเภท checkpoints -
Automatic - นี่คือจุดตรวจที่พบบ่อยที่สุดซึ่งทำงานเป็นกระบวนการในเบื้องหลังเพื่อให้แน่ใจว่าฐานข้อมูล SQL Server สามารถกู้คืนได้ในระยะเวลาที่กำหนดโดย Recovery Interval - Server Configuration Option
Indirect- นี่เป็นสิ่งใหม่ใน SQL Server 2012 นอกจากนี้ยังทำงานในพื้นหลัง แต่เพื่อให้เป็นไปตามเวลาการกู้คืนเป้าหมายที่ผู้ใช้ระบุสำหรับฐานข้อมูลเฉพาะที่มีการกำหนดค่าตัวเลือก เมื่อเลือก Target_Recovery_Time สำหรับฐานข้อมูลที่กำหนดแล้วสิ่งนี้จะแทนที่ช่วงการกู้คืนที่ระบุไว้สำหรับเซิร์ฟเวอร์และหลีกเลี่ยงจุดตรวจอัตโนมัติบนฐานข้อมูลดังกล่าว
Manual- คำสั่งนี้ทำงานเหมือนกับคำสั่ง T-SQL อื่น ๆ เมื่อคุณออกคำสั่งจุดตรวจมันจะทำงานจนเสร็จสิ้น จุดตรวจด้วยตนเองทำงานสำหรับฐานข้อมูลปัจจุบันของคุณเท่านั้น คุณยังสามารถระบุ Checkpoint_Duration ซึ่งเป็นทางเลือก - ระยะเวลานี้ระบุเวลาที่คุณต้องการให้จุดตรวจของคุณเสร็จสมบูรณ์
Internal- ในฐานะผู้ใช้คุณไม่สามารถควบคุมจุดตรวจภายในได้ ออกในการดำเนินการเฉพาะเช่น
การปิดระบบจะเริ่มต้นการดำเนินการจุดตรวจบนฐานข้อมูลทั้งหมดยกเว้นเมื่อการปิดระบบไม่สะอาด (ปิดด้วย nowait)
หากโมเดลการกู้คืนเปลี่ยนจาก Full \ Bulk-logged เป็น Simple
ในขณะที่ทำการสำรองฐานข้อมูล
หากฐานข้อมูลของคุณอยู่ในรูปแบบการกู้คืนอย่างง่ายกระบวนการตรวจสอบจะดำเนินการโดยอัตโนมัติเมื่อบันทึกเต็ม 70% หรือตามช่วงเวลาการกู้คืนตัวเลือกเซิร์ฟเวอร์
คำสั่งแก้ไขฐานข้อมูลเพื่อเพิ่มหรือลบไฟล์ data \ log ยังเริ่มจุดตรวจสอบ
นอกจากนี้ Checkpoint จะเกิดขึ้นเมื่อโมเดลการกู้คืนของ DB ถูกบันทึกเป็นกลุ่มและมีการดำเนินการบันทึกน้อยที่สุด
การสร้าง DB Snapshot
Lazy Writer Process- ผู้เขียนขี้เกียจจะดันหน้าสกปรกไปยังดิสก์ด้วยเหตุผลที่แตกต่างไปจากเดิมอย่างสิ้นเชิงเนื่องจากต้องเพิ่มหน่วยความจำในบัฟเฟอร์พูล สิ่งนี้เกิดขึ้นเมื่อเซิร์ฟเวอร์ SQL อยู่ภายใต้แรงกดดันของหน่วยความจำ เท่าที่ฉันทราบสิ่งนี้ถูกควบคุมโดยกระบวนการภายในและไม่มีการตั้งค่าใด ๆ
เซิร์ฟเวอร์ SQL ตรวจสอบการใช้หน่วยความจำอย่างต่อเนื่องเพื่อประเมินการช่วงชิงทรัพยากร (หรือความพร้อมใช้งาน) หน้าที่ของมันคือตรวจสอบให้แน่ใจว่ามีพื้นที่ว่างจำนวนหนึ่งพร้อมใช้งานตลอดเวลา เป็นส่วนหนึ่งของกระบวนการนี้เมื่อสังเกตเห็นการแย่งชิงทรัพยากรดังกล่าวจะทำให้ Lazy Writer เพิ่มพื้นที่ว่างบางหน้าในหน่วยความจำโดยการเขียนเพจสกปรกลงในดิสก์ ใช้อัลกอริทึม Least Recent Used (LRU) เพื่อตัดสินใจว่าจะล้างหน้าใดลงในดิสก์
หาก Lazy Writer ทำงานอยู่ตลอดเวลาอาจบ่งบอกถึงปัญหาคอขวดของหน่วยความจำ
สถาปัตยกรรมหน่วยความจำ
ต่อไปนี้เป็นคุณสมบัติเด่นบางประการของสถาปัตยกรรมหน่วยความจำ
เป้าหมายการออกแบบหลักประการหนึ่งของซอฟต์แวร์ฐานข้อมูลทั้งหมดคือการลดขนาดดิสก์ I / O เนื่องจากการอ่านและเขียนดิสก์เป็นหนึ่งในการดำเนินการที่ใช้ทรัพยากรมากที่สุด
หน่วยความจำใน windows สามารถเรียกได้ด้วย Virtual Address Space ซึ่งแชร์โดยโหมด Kernel (โหมด OS) และโหมดผู้ใช้ (แอปพลิเคชันเช่น SQL Server)
"พื้นที่ที่อยู่ของผู้ใช้" เซิร์ฟเวอร์ SQL แบ่งออกเป็นสองภูมิภาค: MemToLeave และ Buffer Pool
ขนาดของ MemToLeave (MTL) และ Buffer Pool (BPool) ถูกกำหนดโดย SQL Server ระหว่างการเริ่มต้น
Buffer managementเป็นองค์ประกอบหลักในการบรรลุ I / O ที่มีประสิทธิภาพสูง คอมโพเนนต์การจัดการบัฟเฟอร์ประกอบด้วยสองกลไก: ตัวจัดการบัฟเฟอร์เพื่อเข้าถึงและอัพเดตเพจฐานข้อมูลและพูลบัฟเฟอร์เพื่อลดไฟล์ฐานข้อมูล I / O
บัฟเฟอร์พูลยังแบ่งออกเป็นหลายส่วน สิ่งที่สำคัญที่สุดคือบัฟเฟอร์แคช (เรียกอีกอย่างว่าแคชข้อมูล) และแคชโพรซีเดอร์Buffer cacheเก็บเพจข้อมูลไว้ในหน่วยความจำเพื่อให้สามารถดึงข้อมูลที่เข้าถึงบ่อยจากแคชได้ อีกทางเลือกหนึ่งคือการอ่านหน้าข้อมูลจากดิสก์ การอ่านหน้าข้อมูลจากแคชช่วยเพิ่มประสิทธิภาพโดยการลดจำนวนการดำเนินการ I / O ที่ต้องการซึ่งช้ากว่าการดึงข้อมูลจากหน่วยความจำโดยเนื้อแท้
Procedure cacheเก็บรักษาขั้นตอนการจัดเก็บและแผนการดำเนินการสืบค้นเพื่อลดจำนวนครั้งที่ต้องสร้างแผนแบบสอบถาม คุณสามารถค้นหาข้อมูลเกี่ยวกับขนาดและกิจกรรมภายในแคชโพรซีเดอร์โดยใช้คำสั่ง DBCC PROCCACHE
ส่วนอื่น ๆ ของบัฟเฟอร์พูล ได้แก่ -
System level data structures - เก็บข้อมูลระดับอินสแตนซ์ของ SQL Server เกี่ยวกับฐานข้อมูลและล็อก
Log cache - สงวนไว้สำหรับการอ่านและเขียนหน้าบันทึกธุรกรรม
Connection context- การเชื่อมต่อกับอินสแตนซ์แต่ละครั้งจะมีพื้นที่หน่วยความจำขนาดเล็กเพื่อบันทึกสถานะปัจจุบันของการเชื่อมต่อ ข้อมูลนี้รวมถึงขั้นตอนการจัดเก็บและพารามิเตอร์ฟังก์ชันที่ผู้ใช้กำหนดตำแหน่งเคอร์เซอร์และอื่น ๆ
Stack space - Windows จัดสรรพื้นที่สแต็กสำหรับแต่ละเธรดที่เริ่มต้นโดย SQL Server
สถาปัตยกรรมไฟล์ข้อมูล
สถาปัตยกรรมไฟล์ข้อมูลมีส่วนประกอบดังต่อไปนี้ -
กลุ่มไฟล์
ไฟล์ฐานข้อมูลสามารถจัดกลุ่มเข้าด้วยกันในกลุ่มไฟล์เพื่อวัตถุประสงค์ในการจัดสรรและการดูแลระบบ ไม่มีไฟล์ใดที่สามารถเป็นสมาชิกของกลุ่มไฟล์ได้มากกว่าหนึ่งกลุ่ม ไฟล์บันทึกไม่เคยเป็นส่วนหนึ่งของกลุ่มไฟล์ พื้นที่บันทึกถูกจัดการแยกจากพื้นที่ข้อมูล
มีกลุ่มไฟล์สองประเภทใน SQL Server หลักและผู้ใช้กำหนด กลุ่มไฟล์หลักประกอบด้วยไฟล์ข้อมูลหลักและไฟล์อื่น ๆ ที่ไม่ได้กำหนดให้กับกลุ่มไฟล์อื่นโดยเฉพาะ เพจทั้งหมดสำหรับตารางระบบถูกจัดสรรในกลุ่มไฟล์หลัก กลุ่มไฟล์ที่ผู้ใช้กำหนดคือกลุ่มไฟล์ใด ๆ ที่ระบุโดยใช้คีย์เวิร์ดกลุ่มไฟล์ในการสร้างฐานข้อมูลหรือแก้ไขคำสั่งฐานข้อมูล
กลุ่มไฟล์หนึ่งกลุ่มในแต่ละฐานข้อมูลทำงานเป็นกลุ่มไฟล์เริ่มต้น เมื่อ SQL Server จัดสรรเพจให้กับตารางหรือดัชนีที่ไม่มีการระบุกลุ่มไฟล์เมื่อสร้างขึ้นเพจจะถูกจัดสรรจากกลุ่มไฟล์ดีฟอลต์ ในการเปลี่ยนกลุ่มไฟล์เริ่มต้นจากกลุ่มไฟล์หนึ่งไปยังกลุ่มไฟล์อื่นควรมี db_owner fixed db role
โดยค่าเริ่มต้นกลุ่มไฟล์หลักคือกลุ่มไฟล์เริ่มต้น ผู้ใช้ควรมีบทบาทฐานข้อมูลคงที่ db_owner เพื่อสำรองไฟล์และกลุ่มไฟล์ทีละไฟล์
ไฟล์
ฐานข้อมูลมีไฟล์สามประเภท ได้แก่ ไฟล์ข้อมูลหลักไฟล์ข้อมูลรองและไฟล์บันทึก ไฟล์ข้อมูลหลักเป็นจุดเริ่มต้นของฐานข้อมูลและชี้ไปที่ไฟล์อื่น ๆ ในฐานข้อมูล
ทุกฐานข้อมูลมีไฟล์ข้อมูลหลักหนึ่งไฟล์ เราสามารถให้นามสกุลใดก็ได้สำหรับไฟล์ข้อมูลหลัก แต่ส่วนขยายที่แนะนำคือ.mdf. ไฟล์ข้อมูลทุติยภูมิคือไฟล์อื่นที่ไม่ใช่ไฟล์ข้อมูลหลักในฐานข้อมูลนั้น ฐานข้อมูลบางแห่งอาจมีไฟล์ข้อมูลทุติยภูมิหลายไฟล์ ฐานข้อมูลบางแห่งอาจไม่มีไฟล์ข้อมูลทุติยภูมิแม้แต่ไฟล์เดียว ส่วนขยายที่แนะนำสำหรับไฟล์ข้อมูลทุติยภูมิคือ.ndf.
ล็อกไฟล์เก็บข้อมูลบันทึกทั้งหมดที่ใช้ในการกู้คืนฐานข้อมูล ฐานข้อมูลต้องมีไฟล์บันทึกอย่างน้อยหนึ่งไฟล์ เราสามารถมีไฟล์บันทึกหลายไฟล์สำหรับฐานข้อมูลเดียว ส่วนขยายที่แนะนำสำหรับล็อกไฟล์คือ.ldf.
ตำแหน่งของไฟล์ทั้งหมดในฐานข้อมูลจะถูกบันทึกทั้งในฐานข้อมูลหลักและไฟล์หลักสำหรับฐานข้อมูล โดยส่วนใหญ่แล้วโปรแกรมฐานข้อมูลจะใช้ตำแหน่งไฟล์จากฐานข้อมูลหลัก
ไฟล์มีสองชื่อ - ตรรกะและกายภาพ ชื่อตรรกะใช้เพื่ออ้างถึงไฟล์ในคำสั่ง T-SQL ทั้งหมด ชื่อจริงคือ OS_file_name ซึ่งต้องเป็นไปตามกฎของ OS ข้อมูลและไฟล์บันทึกสามารถวางบนระบบไฟล์ FAT หรือ NTFS แต่ไม่สามารถวางบนระบบไฟล์บีบอัดได้ สามารถมีไฟล์ได้มากถึง 32,767 ไฟล์ในฐานข้อมูลเดียว
ขอบเขต
Extents เป็นหน่วยพื้นฐานที่จัดสรรพื้นที่ให้กับตารางและดัชนี ขอบเขตคือ 8 หน้าติดกันหรือ 64KB SQL Server มี Extents สองประเภท - Uniform และ Mixed ส่วนขยายที่เหมือนกันประกอบด้วยวัตถุชิ้นเดียวเท่านั้น ส่วนขยายแบบผสมจะใช้ร่วมกันได้ถึงแปดวัตถุ
หน้า
เป็นหน่วยพื้นฐานของการจัดเก็บข้อมูลใน MS SQL Server ขนาดของหน้าคือ 8KB จุดเริ่มต้นของแต่ละเพจคือส่วนหัว 96 ไบต์ที่ใช้ในการจัดเก็บข้อมูลระบบเช่นประเภทของเพจจำนวนพื้นที่ว่างบนเพจและ id อ็อบเจ็กต์ของอ็อบเจ็กต์ที่เป็นเจ้าของเพจ เพจข้อมูลมี 9 ประเภทใน SQL Server
Data - แถวข้อมูลที่มีข้อมูลทั้งหมดยกเว้นข้อมูลข้อความ ntext และรูปภาพ
Index - รายการดัชนี
Tex\Image - ข้อมูลข้อความรูปภาพและ ntext
GAM - ข้อมูลเกี่ยวกับขอบเขตที่จัดสรร
SGAM - ข้อมูลเกี่ยวกับขอบเขตที่จัดสรรในระดับระบบ
Page Free Space (PFS) - ข้อมูลเกี่ยวกับพื้นที่ว่างบนหน้า
Index Allocation Map (IAM) - ข้อมูลเกี่ยวกับขอบเขตที่ใช้โดยตารางหรือดัชนี
Bulk Changed Map (BCM) - ข้อมูลเกี่ยวกับขอบเขตที่แก้ไขโดยการดำเนินการจำนวนมากตั้งแต่คำสั่งบันทึกการสำรองข้อมูลล่าสุด
Differential Changed Map (DCM) - ข้อมูลเกี่ยวกับขอบเขตที่เปลี่ยนแปลงไปตั้งแต่คำสั่งฐานข้อมูลสำรองล่าสุด
สถาปัตยกรรมไฟล์บันทึก
บันทึกธุรกรรมของเซิร์ฟเวอร์ SQL ดำเนินการอย่างมีเหตุผลราวกับว่าบันทึกธุรกรรมเป็นสตริงของระเบียนบันทึก บันทึกแต่ละรายการจะถูกระบุโดย Log Sequence Number (LSN) แต่ละระเบียนบันทึกมี ID ของธุรกรรมที่เป็นสมาชิก
บันทึกบันทึกสำหรับการแก้ไขข้อมูลจะบันทึกการดำเนินการทางตรรกะที่ดำเนินการหรือบันทึกภาพก่อนและหลังของข้อมูลที่แก้ไข ภาพก่อนหน้าคือสำเนาของข้อมูลก่อนที่จะดำเนินการ ภาพหลังคือสำเนาของข้อมูลหลังจากดำเนินการแล้ว
ขั้นตอนในการกู้คืนการดำเนินการขึ้นอยู่กับประเภทของบันทึกบันทึก -
- บันทึกการดำเนินการทางตรรกะแล้ว
- เมื่อต้องการหมุนการดำเนินการทางตรรกะไปข้างหน้าการดำเนินการจะดำเนินการอีกครั้ง
- ในการย้อนการดำเนินการทางตรรกะกลับการดำเนินการตรรกะย้อนกลับจะดำเนินการ
- บันทึกภาพก่อนและหลัง
- ในการเลื่อนการดำเนินการไปข้างหน้าภาพหลังจะถูกนำไปใช้
- หากต้องการย้อนการดำเนินการภาพก่อนจะถูกนำไปใช้
การดำเนินการประเภทต่างๆจะถูกบันทึกไว้ในบันทึกธุรกรรม การดำเนินการเหล่านี้ ได้แก่ -
จุดเริ่มต้นและจุดสิ้นสุดของแต่ละธุรกรรม
ทุกการแก้ไขข้อมูล (แทรกอัปเดตหรือลบ) ซึ่งรวมถึงการเปลี่ยนแปลงตามโพรซีเดอร์ที่ระบบจัดเก็บหรือคำสั่ง data definition language (DDL) ไปยังตารางใด ๆ
ทุกขอบเขตและการจัดสรรหน้าหรือการจัดสรร
การสร้างหรือวางตารางหรือดัชนี
การดำเนินการย้อนกลับจะถูกบันทึกไว้ด้วย ธุรกรรมแต่ละรายการสงวนพื้นที่ในบันทึกธุรกรรมเพื่อให้แน่ใจว่ามีพื้นที่บันทึกเพียงพอที่จะรองรับการย้อนกลับที่เกิดจากคำสั่งการย้อนกลับอย่างชัดเจนหรือหากพบข้อผิดพลาด พื้นที่ที่สงวนไว้นี้จะถูกทำให้เป็นอิสระเมื่อธุรกรรมเสร็จสมบูรณ์
ส่วนของไฟล์บันทึกจากบันทึกบันทึกแรกที่ต้องมีอยู่สำหรับการย้อนกลับทั้งฐานข้อมูลที่ประสบความสำเร็จไปยังบันทึกบันทึกที่เขียนล่าสุดเรียกว่าส่วนที่ใช้งานอยู่ของบันทึกหรือบันทึกที่ใช้งานอยู่ นี่คือส่วนของบันทึกที่จำเป็นสำหรับการกู้คืนฐานข้อมูลทั้งหมด ไม่สามารถตัดทอนส่วนใดส่วนหนึ่งของบันทึกที่ใช้งานอยู่ได้ LSN ของบันทึกบันทึกแรกนี้เรียกว่า LSN การกู้คืนขั้นต่ำ (Min LSN)
SQL Server Database Engine แบ่งไฟล์บันทึกฟิสิคัลแต่ละไฟล์ภายในเป็นไฟล์บันทึกเสมือนจำนวนหนึ่ง ไฟล์บันทึกเสมือนไม่มีขนาดคงที่และไม่มีจำนวนไฟล์บันทึกเสมือนที่แน่นอนสำหรับไฟล์บันทึกทางกายภาพ
Database Engine จะเลือกขนาดของไฟล์บันทึกเสมือนแบบไดนามิกในขณะที่กำลังสร้างหรือขยายล็อกไฟล์ โปรแกรมฐานข้อมูลพยายามรักษาไฟล์เสมือนจำนวนเล็กน้อย ขนาดหรือจำนวนของล็อกไฟล์เสมือนไม่สามารถกำหนดค่าหรือตั้งค่าโดยผู้ดูแลระบบ ไฟล์บันทึกเสมือนในเวลาเดียวที่มีผลต่อประสิทธิภาพของระบบคือถ้าไฟล์บันทึกทางกายภาพถูกกำหนดโดยขนาดเล็กและค่า growth_increment
ค่าขนาดคือขนาดเริ่มต้นสำหรับล็อกไฟล์และค่า growth_increment คือจำนวนช่องว่างที่เพิ่มให้กับไฟล์ทุกครั้งที่ต้องใช้พื้นที่ใหม่ หากไฟล์บันทึกมีขนาดใหญ่ขึ้นเนื่องจากมีการเพิ่มทีละน้อยไฟล์บันทึกเหล่านั้นจะมีไฟล์บันทึกเสมือนจำนวนมาก สิ่งนี้สามารถชะลอการเริ่มต้นฐานข้อมูลและยังบันทึกการสำรองข้อมูลและเรียกคืนการดำเนินการ
เราขอแนะนำให้คุณกำหนดค่าขนาดไฟล์บันทึกให้ใกล้เคียงกับขนาดสุดท้ายที่ต้องการและมีค่า growth_increment ที่ค่อนข้างใหญ่ SQL Server ใช้บันทึกการเขียนล่วงหน้า (WAL) ซึ่งรับประกันว่าจะไม่มีการเขียนการแก้ไขข้อมูลลงในดิสก์ก่อนที่บันทึกบันทึกที่เกี่ยวข้องจะถูกเขียนลงในดิสก์ สิ่งนี้รักษาคุณสมบัติ ACID สำหรับธุรกรรม