คำถามติดแท็ก shrink

สิ่งที่แย่ที่สุดที่คุณสามารถทำได้กับฐานข้อมูล SQL Server กล่าวโดยย่อ: เสียสละประสิทธิภาพเพื่อให้ได้พื้นที่

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

8
ฉันจะลดขนาดไฟล์ทั้งหมดอย่างรวดเร็วสำหรับฐานข้อมูลทั้งหมดได้อย่างไร
ใน SQL Server (2008 ในกรณีนี้) ฉันจะย่อขนาดไฟล์ทั้งหมดอย่างรวดเร็วทั้งบันทึกและข้อมูลสำหรับฐานข้อมูลทั้งหมดในอินสแตนซ์ได้อย่างไร ฉันสามารถผ่าน SSMS และคลิกขวาแต่ละครั้งและเลือกงาน -> ลดขนาด แต่ฉันกำลังมองหาบางสิ่งที่เร็วขึ้น ฉันสคริปต์สคริปต์ "สร้างฐานข้อมูล" บางส่วนและลืมว่าพวกเขามีขนาดบอลลูนเป็นค่าเริ่มต้นและไม่ต้องการพื้นที่ที่สงวนไว้สำหรับไฟล์เหล่านี้ในโครงการนี้ค่อนข้างมาก

5
เมื่อใดที่ตกลงเพื่อลดขนาดฐานข้อมูล
ฉันรู้ว่าหดตัวเป็นปีศาจ: มันกลับคำสั่งหน้าและรับผิดชอบต่อโรคมะเร็งผิวหนัง, การกระจายตัวของข้อมูลและภาวะโลกร้อน รายการไปที่ ... ที่กล่าวว่าฉันมีฐานข้อมูล 100 GB และฉันลบข้อมูล 50 GB - ไม่ได้อยู่ในตารางเดียว แต่ pruning ทั่วไปของข้อมูลเก่าในระดับกว้างฐานข้อมูลครอบคลุม 90% ของ ตาราง - นี่เป็นกรณีการใช้งานที่เหมาะสมสำหรับลดขนาดฐานข้อมูลหรือไม่? หากไม่เป็นเช่นนั้นขั้นตอนที่เหมาะสมในการทำความสะอาดบ้านหลังจากลบข้อมูลที่มีเปอร์เซ็นต์สูงจากฐานข้อมูลคืออะไร ฉันสามารถนึกถึงสอง: สร้างดัชนีและอัปเดตสถิติใหม่ มีอะไรอีกบ้าง?

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

3
ความแตกต่างระหว่างลดขนาดฐานข้อมูลและไฟล์คืออะไร?
DBCC ShrinkDatabase() DBCC ShrinkFile() ฉันต้องรันทั้งสองคำสั่ง DBCC เพื่อลดขนาดฐานข้อมูลหรือไม่? ความแตกต่างระหว่างสองสิ่งข้างต้นนี้คืออะไร?

1
วิธีปฏิบัติที่ดีที่สุดในการลดขนาด Tempdb ในสภาพแวดล้อมการผลิต
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 5 ปีที่ผ่านมา แนวปฏิบัติที่เหมาะสมที่สุดที่จะใช้เมื่อลดขนาด db ชั่วคราวใน SQL Server 2008 คืออะไร การใช้สิ่งต่อไปนี้มีความเสี่ยงหรือไม่? use tempdb GO DBCC FREEPROCCACHE -- clean cache DBCC DROPCLEANBUFFERS -- clean buffers DBCC FREESYSTEMCACHE ('ALL') -- clean system cache DBCC FREESESSIONCACHE -- clean session cache DBCC SHRINKDATABASE(tempdb, 10); -- shrink …

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); และพบว่าไม่มีธุรกรรมใดเปิดอยู่ อะไรทำให้ฉันไม่สามารถย่อขนาดไฟล์ล็อกได้ ฉันจะแก้ปัญหานี้ได้อย่างไร

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

4
อ้างสิทธิ์พื้นที่ดิสก์หลังจากลบเขตข้อมูลตาราง
ฉันใช้ sql 2008 r2 และ db นั้นทำงานได้ดีและรวดเร็วในช่วง 3 ปีที่ผ่านมาจนถึงประมาณ 3 เดือนที่ผ่านมาเราได้เพิ่มเขตข้อมูล ntext ในตารางที่ใช้งานและใช้งานมาก ตอนนี้เรากำลังเริ่มที่จะออกจากพื้นที่เซิร์ฟเวอร์เนื่องจากขนาดที่ใหญ่ขึ้นของตารางนี้ ฉันอ่านว่าการลดขนาดเราไม่ต้องการทำให้ดัชนีของฐานข้อมูลหลวมเพราะมันทำงานได้อย่างรวดเร็วเป็นเวลาหลายปีและเราไม่ต้องการที่จะได้รับการกระจายตัวของข้อมูล เราตัดสินใจลบฟิลด์นั้นและค่าทั้งหมด: มีวิธีลบฟิลด์ ntext และค่าทั้งหมดและพื้นที่ปล่อยโดยไม่ต้องลบการทำดัชนีโดยไม่ลดขนาดโดยไม่ลดขนาดประสิทธิภาพ db หรือไม่ ฉันกำลังแนบเอาต์พุตคิวรีขนาด db เพื่อแสดงการขยายขนาดของคุณใน 5 เดือนที่ผ่านมา

1
SHRINKFILE Failure - ทำไมการเพิ่มขนาดไฟล์จึงแก้ไขได้?
ฉันใช้SHRINKFILEการดำเนินการบางอย่างเพื่อทำความสะอาดไฟล์เล็ก ๆ ที่ไม่จำเป็นในกลุ่มไฟล์ สำหรับการย่อขนาดหนึ่งคำสั่งด้านล่างส่งผลให้เกิดข้อผิดพลาด: DBCC SHRINKFILE (N'myfile' , EMPTYFILE)' ID ไฟล์ x ของ ID ฐานข้อมูล x ไม่สามารถย่อขนาดได้เนื่องจากเป็นกระบวนการที่ถูกย่อโดยกระบวนการอื่นหรือว่างเปล่า มันไม่ได้ว่างเปล่าหรือหดตัว มันกำลังถูกรันบนฐานข้อมูลที่ไม่ได้ใช้งานโดยทุกคนยกเว้นตัวฉันเอง ไม่ได้เปิดใช้งานการย่อขนาดอัตโนมัติและไม่เคยเป็น แต่มีอยู่ shrinks คู่มือการดำเนินการเกี่ยวกับฐานข้อมูลนี้เป็นประจำก่อนที่จะฉันได้รับในมือของฉันที่มันถ้าเรื่องที่ทุก บนSQLServerCentralเธรดจากทศวรรษที่ผ่านมาแนะนำการเพิ่ม MB ไม่กี่ MB ลงในแฟ้มได้เนื่องจาก "ตั้งค่าตัวนับภายในหรือสวิตช์ภายในที่บอกว่ามันไม่ได้อยู่ในช่วงหดตัวในขณะนี้" สิ่งนี้ใช้ได้ - ยอดเยี่ยม แต่ทุกคนสามารถอธิบายรายละเอียดที่มากขึ้นว่า / ทำไมมันถึงเกี่ยวกับ SQL Server internals?

3
ขนาดฐานข้อมูล - MDF ใหญ่เกินไป?
ฉันกำลังบำรุงรักษาฐานข้อมูล SQL Server 2005 ซึ่งโฮสต์ประมาณ 2.9Tb ของข้อมูล (2 x 1.45Tb - ฉันมี schema RAW และ schema การวิเคราะห์ดังนั้นโดยทั่วไปแล้วสองชุดของข้อมูลที่ติดเครื่อง) รูปแบบการกู้คืนง่ายและ.ldfอยู่ที่ 6Gb ไม่ว่าจะด้วยเหตุผลใดก็ตาม.mdfคือ 7.5Tb ตอนนี้อาจมีคอลัมน์เพิ่มเติมเพียง 2-3 คอลัมน์ในตารางวิเคราะห์และมีNVARCHAR(MAX)คอลัมน์ไม่มากซึ่งจากสิ่งที่ฉัน (อาจเข้าใจผิด - โปรดแก้ไขให้ถูกต้องถ้าฉันผิด) อาจทำให้เกิดการจัดสรรพื้นที่เพิ่มเติม หลังจากหดฐานข้อมูลตอนนี้ - มันอยู่ที่ ~ 9Tb ก่อนหน้านั้น ความคิดใด ๆ และโปรดแจ้งให้เราทราบหากคุณมีคำถามเพิ่มเติม - ฉันยังใหม่ต่อการดูแลฐานข้อมูลและการเพิ่มประสิทธิภาพ (โดยปกติฉันจะไม่ทำงานด้านนี้ :)) ขอบคุณมาก! Andrija

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

10
ย่อขนาดฐานข้อมูลให้ต่ำกว่าขนาดเริ่มต้น
ฉันมีฐานข้อมูล dev SQL Server 2005 ที่เป็นสำเนา 30GB เราได้ลบข้อมูลบางส่วนที่ไม่ต้องการใน dev ซึ่งนำพื้นที่ไฟล์ข้อมูลที่ใช้ไปถึง 20GB ดังนั้นเราจึงไม่ได้ใช้ประมาณ 33% ฉันต้องการเรียกคืนพื้นที่ซึ่งจะช่วยให้เรามีฐานข้อมูล dev ที่สองบนเซิร์ฟเวอร์ (ขึ้นอยู่กับรุ่นที่ตัดลง); อย่างไรก็ตามฉันไม่สามารถเรียกคืนพื้นที่ได้ฉันได้ทำสิ่งต่อไปนี้แล้ว: ขนาดเริ่มต้นของไฟล์SMS2_Dataคือ 30GB DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY) ติดตามโดย DBCC SHRINKFILE (N'SMS2_Data' , 19500) ไม่มีความสุข ฉันได้ลองทำสำเนาสำรองสร้างฐานข้อมูลใหม่ที่มีขนาดเริ่มต้นต่ำแล้วกู้คืนไม่มีความสุขเมื่อขนาดเริ่มต้นถูกเขียนทับ ได้ลองแล้ว: ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000) ข้อผิดพลาดนี้บอกว่า: ไฟล์ MODIFY ล้มเหลว …

3
รับ MS SQL Server เพื่อปล่อยพื้นที่ดิสก์
ตารางฐานข้อมูลที่มีการจัดการไม่ดีมีจำนวนมหาศาล 48 + กิ๊กบันทึกเด็กกำพร้า ฉันพยายามทำความสะอาดและทำให้ฮาร์ดไดรฟ์เต็มอันตรายของฉันกลับสู่สภาวะปกติ ฉันจะลบประมาณ 400 ล้านบันทึกจากตารางนี้ สิ่งนี้กำลังทำงานอยู่ขณะที่ฉันพิมพ์ ฉันสังเกตเห็นว่าฉันไม่เห็นการลดลงของพื้นที่ว่างในฮาร์ดไดรฟ์ของฉัน แต่ฉันเห็นหน่วยความจำลดลงในแบบสอบถามตารางระบบฉันกำลังทำงานเพื่อให้ได้ขนาดตาราง ฐานข้อมูลใช้ "Simple Recovery Model" มีคำถามมากมายที่คล้ายกับสิ่งนี้พร้อมคำตอบที่บอกว่าคุณจำเป็นต้องลดขนาดฐานข้อมูล แต่พวกเขายังอธิบายต่อไปว่าสิ่งเลวร้าย / น่ากลัวนี้เกิดขึ้นเพราะข้อมูลที่อยู่อย่างกระจัดกระจาย ฯลฯ เนื่องจากฐานข้อมูลไม่ควรมีขนาดนี้ มันยังไม่ดีสำหรับฉันที่จะหดหรือไม่ นี่คือฐานข้อมูลการผลิต หากฉันย่อขนาดลงมันจะทำให้ระบบหยุดทำงานหรือล็อคฐานข้อมูลหรือไม่ ใน SQL Server Management Studio คุณมีสองตัวเลือกสำหรับการย่อขนาดฐานข้อมูลหรือไฟล์ ให้สถานการณ์ของฉันสิ่งที่จะเป็นตัวเลือกที่ดีที่สุด? มีกฎเกี่ยวกับเปอร์เซ็นต์ของพื้นที่ว่างที่ควรมีฐานข้อมูลหรือไม่ การอ่านคำอธิบายแท็กของการย่อขนาดทำให้ฉันไม่ต้องการทำเช่นนั้น มีวิธีอื่นอีกไหม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.