คำถามติดแท็ก transaction-log

บันทึกธุรกรรมคือรายการ / ประวัติของการดัดแปลงที่ดำเนินการโดยระบบการจัดการฐานข้อมูลเพื่อรับประกันคุณสมบัติ ACID ผ่านการขัดข้องหรือความล้มเหลวของฮาร์ดแวร์

4
เหตุใดทรานแซคชันของธุรกรรมจึงเพิ่มขึ้นหรือหมดพื้นที่
คำถามนี้ดูเหมือนจะเป็นคำถามที่พบบ่อยในฟอรัมส่วนใหญ่และทั่วทั้งเว็บมันถูกถามที่นี่ในหลาย ๆ รูปแบบซึ่งโดยทั่วไปแล้วจะมีลักษณะดังนี้: ใน SQL Server - อะไรคือเหตุผลที่บันทึกการทำธุรกรรมมีขนาดใหญ่มาก? เหตุใดไฟล์บันทึกของฉันจึงใหญ่ มีวิธีใดบ้างในการป้องกันไม่ให้ปัญหานี้เกิดขึ้น ฉันจะทำอย่างไรเมื่อฉันติดตามตัวเองด้วยสาเหตุที่สำคัญและต้องการวางไฟล์บันทึกธุรกรรมของฉันให้มีขนาดสมบูรณ์

4
วิธีการระบุแบบสอบถามที่เติมบันทึกธุรกรรม tempdb?
ฉันต้องการทราบวิธีการระบุแบบสอบถามที่ถูกต้องหรือเก็บ proc ซึ่งจริง ๆ แล้วกรอกบันทึกการทำธุรกรรมของฐานข้อมูล TEMPDB

5
เหตุใดการเปลี่ยนแปลงคอลัมน์ไม่เป็นศูนย์ทำให้เกิดการเติบโตของไฟล์บันทึกขนาดใหญ่
ฉันมีตารางที่มีแถว 64 ม. ที่ใช้ดิสก์ 4.3 GB สำหรับข้อมูล แต่ละแถวมีประมาณ 30 ไบต์ของคอลัมน์จำนวนเต็มบวกNVARCHAR(255)คอลัมน์ตัวแปรสำหรับข้อความ ฉันเพิ่ม AA คอลัมน์ nullable Datetimeoffset(0)กับข้อมูลประเภท จากนั้นฉันก็อัพเดทคอลัมน์นี้สำหรับทุกแถวและตรวจสอบให้แน่ใจว่าเม็ดมีดใหม่ทั้งหมดวางค่าในคอลัมน์นี้ เมื่อไม่มีรายการ NULL ฉันก็วิ่งคำสั่งนี้เพื่อให้ฟิลด์ใหม่ของฉันได้รับคำสั่ง: ALTER TABLE tblCheckResult ALTER COLUMN [dtoDateTime] [datetimeoffset](0) NOT NULL ผลที่ได้คือการเติบโตอย่างมากในขนาดของบันทึกการทำธุรกรรม - จาก 6GB เป็นมากกว่า 36GB จนกว่าจะหมดพื้นที่! ไม่มีใครมีความคิดอะไรในโลก SQL Server 2008 R2 ที่กำลังทำอยู่สำหรับคำสั่งง่ายๆนี้เพื่อให้เกิดการเติบโตอย่างมาก

4
บันทึกธุรกรรมสำหรับฐานข้อมูล 'database_name' เต็มเนื่องจาก 'XTP_CHECKPOINT'
XTP_CHECKPOINTฉันมีคำถามเกี่ยวกับ ฉันใช้ SQL Server 2014 ฉันมีฐานข้อมูลที่อยู่ในโหมดรูปแบบการกู้คืนที่เรียบง่าย มันยังถูกทำซ้ำ ไม่มีธุรกรรมที่เปิดอยู่ ฉันวิ่งDBCC OPENTRANแล้วมันกลับมา: "ไม่มีธุรกรรมเปิดค้างอยู่" แต่ฉันได้รับข้อความนี้ทุกครั้งที่ฉันพยายามสร้างหรือวางตารางหรือลบข้อมูล: (ฉันได้แทนที่ชื่อฐานข้อมูลจริงด้วยคำว่าdatabase_name) "บันทึกธุรกรรมสำหรับฐานข้อมูล 'database_name' เต็มเนื่องจาก 'XTP_CHECKPOINT'" ไม่มีใครรู้ว่าทำไมสิ่งนี้จึงเกิดขึ้นและที่สำคัญฉันจะทำให้มันหยุดได้อย่างไร และใช่ฐานข้อมูลอยู่ในโหมดการกู้คืนแบบง่าย ie บันทึกธุรกรรมควรตัดโดยอัตโนมัติ บังเอิญฐานข้อมูลอื่นที่ฉันมีในโหมดการกู้คืนเต็มทำสิ่งเดียวกันเริ่มกลับข้อผิดพลาดเดียวกัน: บันทึกธุรกรรมสำหรับฐานข้อมูล 'database_name' เต็มเนื่องจาก 'XTP_CHECKPOINT' ฉันพยายามเปลี่ยนการตั้งค่าการเติบโตบันทึกเป็นการเติบโตแบบไม่ จำกัด แต่จะไม่ให้ฉันกลับข้อผิดพลาดเดียวกัน ฉันสามารถทำซ้ำปัญหาโดยไม่มีสิ่ง XTP ใด ๆ เลยยกเว้นเฉพาะกลุ่มไฟล์ นี่คือวิธี: http://pastebin.com/jWSiEU9U

4
เหตุใดบันทึกการทำธุรกรรมจึงยังคงเติบโตในโหมดการกู้คืนอย่างง่ายพร้อมการสำรองข้อมูลทุกคืน
ก่อนที่จะทำเครื่องหมายว่าซ้ำกันทันทีฉันได้อ่านของ Mike Walsh เหตุใดทรานแซคชันทรานแซกชันเติบโตหรือหมดพื้นที่ แต่ฉันไม่คิดว่ามันจะให้คำตอบกับสถานการณ์ของฉัน ฉันดูคำถามที่คล้ายกันหลายสิบคำถาม แต่คำถามที่เกี่ยวข้องส่วนใหญ่เพิ่งพูดว่า "ซ้ำ" และชี้ไปที่คำถามของไมค์ รายละเอียด: ฉันมีฐานข้อมูลจำนวน ~ 500MB ใน SQL Server 2008 R2 ทั้งหมดในโหมดการกู้คืนที่เรียบง่าย (ไม่ใช่ตัวเลือกของฉัน) สำรองข้อมูลเต็มรูปแบบทุกคืนพร้อมแฟ้มข้อมูล ~ 200MB และไฟล์บันทึก ~ 300MB บันทึกจะไม่โตขึ้นเป็น 300MB ทันที แต่ค่อนข้างช้าในช่วงสองสามเดือน ไม่มีธุรกรรมใด ๆ เปิดอยู่อย่างน้อยตาม sp_who2 และการตรวจสอบกิจกรรม ถ้าฉันคลิกขวาที่ฐานข้อมูลและเลือกคุณสมบัติมันบอกฉันว่ามี ~ 50MB ฟรี โดยเฉพาะอย่างยิ่งหลังจากการสำรองข้อมูลไฟล์บันทึกทั้งหมดไม่ควรว่างหรือไม่ ในโหมด SIMPLE บันทึกไม่ควรฟรีตราบใดที่ไม่มีธุรกรรมเปิดอยู่ log_reuse_wait_descจากsys.databasesว่าพูดว่า "ไม่มีอะไร" ซึ่งขึ้นอยู่กับคำถามและคำตอบที่อ้างถึงข้างต้นบอกว่ามันไม่ควรรออะไรที่จะนำมาใช้ซ้ำพื้นที่ ถ้าฉันทำ 'DBCC SHRINKFILE' ไฟล์บันทึกจะลดลงเหลือ …

6
การลดขนาดไฟล์บันทึกไม่ลดขนาด
ฉันมีฐานข้อมูลที่มีไฟล์ข้อมูล 350 MB (.mdf) และไฟล์บันทึก 4.9 GB (.ldf) FULLรุ่นการกู้คืนจะถูกกำหนดให้ เมื่อฉันพยายามที่จะลดขนาดไฟล์บันทึกก็ไม่หดตัว ฉันรู้ว่าการลดขนาดฐานข้อมูลไม่ดีและไม่ควรทำ แต่ก็ยังฉันพยายามทำเพื่อลดขนาดไฟล์บันทึก เมื่อฉันวิ่ง DBCC SQLPerf(logspace) ฉันพบว่าขนาดบันทึกเป็น4932 MBและพื้นที่บันทึกที่ใช้คือ98.76% ! จากนั้นฉันลองคำสั่งนี้ USE <databasename>; DBCC loginfo; ตอนนี้ VLF เกือบทั้งหมดเป็น "สถานะ 2" ซึ่งหมายความว่าทั้งหมดใช้งานอยู่ ฉันพยายามที่จะสำรองข้อมูลบันทึกแล้วลดขนาดไฟล์บันทึก การลดขนาดไม่ลดขนาด ฉันเปลี่ยนรูปแบบการกู้คืนSIMPLEและลองลดขนาดอีกครั้ง แต่สิ่งนี้ก็ไม่ได้ช่วย ฉันตรวจสอบธุรกรรมที่เปิดอยู่ DBCC opentran (database); และพบว่าไม่มีธุรกรรมใดเปิดอยู่ อะไรทำให้ฉันไม่สามารถย่อขนาดไฟล์ล็อกได้ ฉันจะแก้ปัญหานี้ได้อย่างไร

6
วิธีการป้องกันไม่ให้บันทึกธุรกรรมเต็มระหว่างการจัดระเบียบดัชนีใหม่
เรามีหลายเครื่องที่เราได้จัดสรรขนาดของบันทึกการทำธุรกรรมไว้ที่ 50GB ขนาดของตารางที่ฉันพยายามจัดระเบียบใหม่คือ 55 - 60 gb แต่จะเพิ่มขึ้นอย่างต่อเนื่อง เหตุผลหลักที่ฉันต้องการจัดระเบียบใหม่คือการเรียกคืนพื้นที่และผลประโยชน์ใด ๆ เนื่องจากเป็นโบนัสเพิ่มเติม ระดับการแตกแฟรกเมนต์ของตารางคือ 30 - 35% ในเครื่องเหล่านี้บางเครื่องฉันได้รับข้อผิดพลาด "transaction log full" และการจัดระเบียบใหม่ล้มเหลว ขนาดบันทึกธุรกรรมสูงสุดถึง 48gb เป็นวิธีที่ดีในการตอบโต้สิ่งนี้คืออะไร? เราไม่ได้เปิดการเพิ่มอัตโนมัติและฉันลังเลที่จะทำเช่นนั้น ฉันสามารถเพิ่มขนาดบันทึกเป็นค่าที่มากขึ้น แต่เมื่อขนาดตารางเพิ่มขึ้นในอนาคตค่าอาจไม่เพียงพอ นอกจากนี้ยังเอาชนะวัตถุประสงค์ในการจัดระเบียบใหม่เพื่อเรียกคืนพื้นที่ถ้าฉันจะเพิ่มขนาดบันทึกอย่างเท่าเทียมกัน ความคิดเห็นใด ๆ เกี่ยวกับวิธีที่ฉันสามารถตอบโต้เรื่องนี้ได้อย่างมีประสิทธิภาพ การใช้โหมดแบบกลุ่มไม่ใช่ตัวเลือกเนื่องจากการสูญเสียข้อมูลไม่เป็นที่ยอมรับ

2
SQL Server มีวิธีการรับรอบบันทึกธุรกรรมเมื่ออัปเดตคอลัมน์เป็น int
ฉันมีตาราง SQL Server 2005 ชื่อBRITTNEY_SPEARS_MARRIAGESและมีคอลัมน์ต่อไปนี้: MarrigeId tinyint, HusbandName varchar(500), MarrigeLength int ตอนนี้ฉันมีอีกโต๊ะ BRITTNEY_SPEARS_MARRIAGE_STORIES StoryId int, MarriageId tinyint, StoryText nvarchar(max) ปัญหาคือเราต้องการที่จะปรับปรุงMarrigeIdคอลัมน์ไปยังจากint tinyintเราแค่รู้สึกว่า Brittney กำลังจะมีการแต่งงานมากมายก่อนที่ทุกอย่างจะถูกพูดและทำ ตอนนี้BRITTNEY_SPEARS_MARRIAGE_STORIESตารางมีแถวอยู่ 18 ล้านแถว (เดี๋ยวก่อนผู้หญิงมีปัญหา) ดังนั้นเมื่อเราไปอัปเดตบันทึกธุรกรรมจะเต็มและกล่อง SQL Server ของเราก็ตาย เราจะแก้ไขสิ่งนี้ได้อย่างไร จะมีการพูดว่า "สวัสดี SQL Server ฉันจะอัปเดตคอลัมน์นี้และทำให้ใหญ่ขึ้นเชื่อฉันใน SQL Server นี้กรุณาอย่ากรอกบันทึกการทำธุรกรรมในขณะที่คุณพยายามตรวจสอบทุกอย่าง?"

2
ลดขนาดบันทึกธุรกรรมขณะใช้กลุ่มความพร้อมใช้งาน AlwaysOn
เรากำลังใช้AlwaysOn Availability Groupคุณสมบัติของ SQL Server 2012 สำรองฐานข้อมูลเต็มรูปแบบปกติและสำรองข้อมูลบันทึกธุรกรรมจะทำทุกวันในฐานข้อมูลรอง ฉันได้อ่านที่นี่ในการทำสำรองข้อมูลบันทึกธุรกรรมบนทั้งเรพลิกาหลักหรือเรพพลิเคชั่นสำรองจะทำเครื่องหมายบันทึกธุรกรรมของเรพพลิกาทั้งสองว่าสามารถใช้ซ้ำได้ อย่างไรก็ตามขนาดการสำรองข้อมูลบันทึกธุรกรรมมีขนาดใหญ่และสามารถลดลงได้โดยใช้ไฟล์ย่อขนาด: ฉันกู้คืนฐานข้อมูลในเครื่องแล้วทำการดำเนินการย่อขนาด ขนาดของไฟล์บันทึกลดลงเหลือ 160 MB คำถามของฉันอยู่ที่ฐานข้อมูลใดที่ฉันควรทำการลดขนาดไฟล์ล็อกธุรกรรม (หลักรองหรือทั้งสองอย่าง)? ฉันเดาว่าในอดีตเป็นเวลาหลายปีที่ไม่มีไฟล์แบ็คอัพสำรองดังนั้นมันจึงใหญ่มาก การดำเนินการDBCC SQLPERF (LOGSPACE)ฉันจะเห็นว่ามี0.06%การใช้ไฟล์เท่านั้น - ไม่มีจุดใดที่ฉันจะเก็บไฟล์บันทึกขนาดใหญ่เช่นนี้ได้ ใน[sys].[database_files]ฉันจะตรวจสอบว่าmax_sizeมีการตั้งค่า-1กับgrowthการ65536ดังนั้นฉันเดาเมื่อมันต้องมีพื้นที่ว่างมากขึ้นก็จะได้รับ อย่างไรก็ตามฉันสามารถลดขนาดมันเป็น 5% เพื่อป้องกันการเติบโตในอนาคต ฉันกำลังพยายามหาคำยืนยันว่าฉันไม่คิดที่จะทำเช่นนั้น อันที่จริงแล้วการแบ็คอัพ (ในฐานข้อมูลและไฟล์บันทึก) จะดำเนินการเฉพาะในฐานข้อมูลรองดังนั้นมันจะง่ายกว่าที่จะทำการลดขนาดไฟล์ลง แต่ขนาดล็อกไฟล์หลักจะลดลงเช่นกัน?

5
ความแตกต่างระหว่างการสำรองข้อมูลเต็มรูปแบบและการสำรองข้อมูลเต็มรูปแบบเฉพาะการคัดลอกเท่านั้น
ฉันเห็นในเธรด SQL Server Central การสำรองข้อมูลเต็มตัดทอนบันทึกหรือไม่ การสำรองข้อมูลเต็มรูปแบบไม่ตัดทอนบันทึก: ไม่ทั้งการสำรองข้อมูลทั้งหมดหรือส่วนต่างจะตัดทอนบันทึกธุรกรรม - Lynn Pettis No - การสำรองข้อมูลเต็มรูปแบบไม่ตัดทอนบันทึก - Chad Crawford ดังนั้นความแตกต่างระหว่างการสำรองข้อมูลเต็มรูปแบบและการสำรองข้อมูลเต็มรูปแบบเฉพาะการคัดลอกคืออะไร? สำหรับการสำรองข้อมูลบันทึกจะมีการสำรองข้อมูลแบบคัดลอกเท่านั้นซึ่งป้องกันไม่ให้ห่วงโซ่การบันทึกเสียหายโดยไม่ตัดทอนบันทึก ดังนั้นการสำรองข้อมูลเต็มรูปแบบเฉพาะการคัดลอกคืออะไร?

1
เหตุใด CHECKDB จึงอ่านไฟล์บันทึกธุรกรรมบนฐานข้อมูลที่มีตารางปรับแต่งหน่วยความจำ
tl; dr : เหตุใด CHECKDB จึงอ่านบันทึกธุรกรรมสำหรับฐานข้อมูลผู้ใช้ที่มีตารางเพิ่มประสิทธิภาพหน่วยความจำ ปรากฏว่า CHECKDB กำลังอ่านไฟล์บันทึกธุรกรรมของฐานข้อมูลผู้ใช้เมื่อตรวจสอบฐานข้อมูลของฉันโดยเฉพาะฐานข้อมูลที่ใช้ตาราง OLTP ในหน่วยความจำ CHECKDB สำหรับฐานข้อมูลนี้ยังคงเสร็จสิ้นในระยะเวลาที่เหมาะสมดังนั้นฉันจึงอยากรู้เกี่ยวกับพฤติกรรม แต่มันเป็นระยะเวลายาวนานที่สุดสำหรับ CHECKDB ของฐานข้อมูลทั้งหมดในอินสแตนซ์นี้ ในการตรวจสอบCHECKDB จากทุกมุมมองของมหากาพย์ Paul Paulal : คำอธิบายที่สมบูรณ์ของขั้นตอน CHECKDB ทั้งหมดฉันเห็นว่า CHECKDB pre-SQL 2005 CHECKDB ใช้ในการอ่านบันทึกเพื่อให้ได้มุมมองที่สอดคล้องกันของฐานข้อมูล แต่เนื่องจากนี่เป็น 2016 จึงใช้สแน็ปช็อตฐานข้อมูลภายใน อย่างไรก็ตามหนึ่งในข้อกำหนดเบื้องต้นสำหรับสแน็ปช็อตคือ: ฐานข้อมูลต้นทางต้องไม่มีกลุ่มไฟล์ MEMORY_OPTIMIZED_DATA ฐานข้อมูลผู้ใช้ของฉันมีหนึ่งในกลุ่มไฟล์เหล่านี้ดังนั้นจึงดูเหมือนว่าสแน็ปช็อตอยู่นอกตาราง ตามเอกสาร CHECKDB : หากไม่สามารถสร้างสแน็ปช็อตหรือระบุ TABLOCK ได้ DBCC CHECKDB จะได้รับการล็อกเพื่อให้ได้ความสอดคล้องที่จำเป็น ในกรณีนี้จำเป็นต้องใช้การล็อกฐานข้อมูลแบบเอกสิทธิ์เฉพาะบุคคลเพื่อทำการตรวจสอบการจัดสรรและจำเป็นต้องใช้การล็อกตารางแบบแบ่งใช้เพื่อทำการตรวจสอบตาราง โอเคเรากำลังทำการล็อกฐานข้อมูลและล็อคตารางแทนสแนปชอต แต่นั่นก็ไม่ได้อธิบายว่าทำไมมันต้องอ่านบันทึกการทำธุรกรรม แล้วอะไรล่ะ ฉันได้จัดทำสคริปต์ด้านล่างเพื่อจำลองสถานการณ์ …

2
SQL Server - วิธีปฏิบัติที่ดีที่สุดสำหรับการเติบโตของไฟล์ฐานข้อมูล
ฉันเฝ้าสังเกตการเติบโตของไฟล์ผ่านตัวรวบรวมข้อมูลใน sql server 2008 r2 เป็นเวลาสองสัปดาห์ ฐานข้อมูลมีการเติบโตอย่างต่อเนื่องที่ประมาณ 35 (MB) / วัน ฐานข้อมูลยังไม่ถึงขนาดเริ่มต้นที่ 2 GB การเติบโตอัตโนมัติของไฟล์ฐานข้อมูลถูกตั้งไว้ที่ 5MB และฉันต้องการลองวิธีอื่นดังนั้นฉันจึงกำลังมองหาคำแนะนำและหรือความคิดเห็น มีงานปรับแต่งที่ทำงานทุกสัปดาห์ในคืนวันอาทิตย์เวลา 1:30 น. ภารกิจจะ: ตรวจสอบความสมบูรณ์ของฐานข้อมูล ย่อขนาดแฟ้มบันทึก - (ไม่เป็นไรเนื่องจากโหมดการบันทึกเป็นแบบง่าย) ลดขนาดฐานข้อมูล จัดระเบียบดัชนีใหม่ สร้างดัชนีใหม่ อัปเดตสถิติ ล้างประวัติ ฉันต้องการเพิ่มอีกสองขั้นตอนในแผนการปรับรายสัปดาห์: ขยายไฟล์ฐานข้อมูลขึ้น 500 MB หากพื้นที่ที่ใช้จนถึงขีด จำกัด หรือขนาดทั้งหมด ขยายไฟล์บันทึกเพิ่มขึ้น 250 MB (หลังการย่อขนาด) หากพื้นที่ที่ใช้จนถึงขีด จำกัด ขนาดทั้งหมด ด้วยการวางภาระการเติบโตในเวลาออฟไลน์ฉันหวังว่าจะได้รับประสิทธิภาพโดยการลดจำนวนกิจกรรมการเติบโตอัตโนมัติในช่วงที่มีงานหนัก ฉันมีคำถามสองข้อเกี่ยวกับไฟล์ที่กำลังเติบโตอัตโนมัติ สถานที่ที่ดีที่สุดที่จะนำขั้นตอนการเติบโตของไฟล์มาไว้ก่อนหน้าขั้นตอนปัจจุบันหรือหลังจากนั้น หากฉันใช้ALTER DATABASE|MODIFY FILEเพื่อขยายไฟล์ฉันจะทราบได้SpaceUsedInFile …

2
ไม่สามารถคืนค่าฐานข้อมูลเซิร์ฟเวอร์ SQL จากการสำรองข้อมูลเต็มรูปแบบการประมวลผลบันทึกล้มเหลวฐานข้อมูลในสถานะ 'กู้คืน'
ฉันกำลังพยายามตั้งค่าฐานข้อมูลเพื่อวัตถุประสงค์ในการพัฒนาบน SQL Server Developer Edition ในเครื่องของฉัน 12.0.2000.8 ฉันได้รับการสำรองฐานข้อมูลเต็มรูปแบบและมีไฟล์สำรองข้อมูลการเข้าสู่ระบบธุรกรรมเท่านั้นซึ่งถูกส่งมาให้ฉันผ่านเครือข่าย เมื่อพยายามกู้คืนจากการสำรองข้อมูลเต็มรูปแบบหลังจากผ่านไประยะหนึ่ง (อาจจะประมาณ 1 ชั่วโมงฐานข้อมูลจะมีขนาดประมาณ 270 GB) ฉันได้รับข้อผิดพลาด: System.Data.SqlClient.SqlError: เกิดข้อผิดพลาดขณะประมวลผลบันทึกสำหรับฐานข้อมูล 'ชื่อฐานข้อมูล' หากเป็นไปได้ให้เรียกคืนจากการสำรองข้อมูล หากการสำรองข้อมูลไม่พร้อมใช้งานคุณอาจจำเป็นต้องสร้างบันทึกใหม่ (Microsoft.SqlServer.SmoExtended) หลังจากนี้ db อยู่ในสถานะ 'กำลังกู้คืน .. ' ฉันต้องการเรียกใช้บางอย่าง (ได้จากคำถามนี้ ) ALTER DATABASE recovery_test_2 SET EMERGENCY; ALTER DATABASE recovery_test_2 SET SINGLE_USER; DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS; แต่โดยธรรมชาติแล้วฉันไม่สามารถทำได้เนื่องจากฐานข้อมูลอยู่ในสถานะ 'การเรียกคืน .. …

2
ความแตกต่างระหว่างบันทึกธุรกรรมและบันทึกการทำซ้ำใน MySQL
ฉันได้อ่านเกี่ยวกับ MySQL ในความคิดของฉันฉันเห็นสองประเภทบันทึกที่คล้ายกันมาก MySQL บันทึกวิธีและเวลาที่ข้อมูลถูกเปลี่ยนแปลงในบันทึก ข้อมูลที่ใช้สำหรับการกู้คืน MySQL ฉันสับสนกับฟังก์ชั่นการบันทึกสองประเภท

2
เหตุใดฉันจึงไม่ได้รับการบันทึกขั้นต่ำเมื่อแทรกเข้าไปในตารางที่จัดทำดัชนี
ฉันกำลังทดสอบการแทรกการบันทึกน้อยที่สุดในสถานการณ์ที่แตกต่างกันและจากสิ่งที่ฉันอ่าน INSERT INTO SELECT เป็นฮีปที่มีดัชนีที่ไม่ใช่คลัสเตอร์โดยใช้ TABLOCK และ SQL Server 2016+ ควรบันทึกอย่างน้อยที่สุด แต่ในกรณีของฉันเมื่อทำสิ่งนี้ การบันทึกเต็มรูปแบบ ฐานข้อมูลของฉันอยู่ในรูปแบบการกู้คืนข้อมูลแบบง่ายและฉันได้รับการแทรกที่น้อยที่สุดใน heap โดยไม่มีดัชนีและ TABLOCK ฉันใช้การสำรองข้อมูลเก่าของฐานข้อมูล Stack Overflow เพื่อทดสอบและได้สร้างการทำซ้ำของตารางโพสต์ด้วยสคีมาต่อไปนี้ ... CREATE TABLE [dbo].[PostsDestination]( [Id] [int] NOT NULL, [AcceptedAnswerId] [int] NULL, [AnswerCount] [int] NULL, [Body] [nvarchar](max) NOT NULL, [ClosedDate] [datetime] NULL, [CommentCount] [int] NULL, [CommunityOwnedDate] [datetime] NULL, [CreationDate] [datetime] …

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