ความแตกต่างระหว่างลดขนาดฐานข้อมูลและไฟล์คืออะไร?


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

คำตอบ:


36

เพียงแค่ ...

  • DBCC ShrinkDatabase(): ย่อขนาดไฟล์ทั้งหมด
  • DBCC ShrinkFile(): เพียงไฟล์เดียว

ตัวอย่างเช่นคุณอาจมีปัญหาในการสำรองข้อมูลและมันไม่สามารถใช้งานDBCC ShrinkFile()ได้

คุณแทบไม่เคยใช้ShrinkDatabaseเลย

ก่อนที่คุณจะพิจารณาใช้คำสั่งทั้งสองโปรดอ่านบล็อกของ Paul Randal เกี่ยวกับการย่อขนาด

ฉันจะไม่ลดขนาดไฟล์ใดไฟล์หนึ่ง (mdf, ldf) เว้นแต่จะมีเหตุผลที่ชัดเจน ไฟล์มีขนาดเท่าที่ควรจะเป็น บล็อกใด ๆ ที่แนะนำให้ทำเช่นนี้เนื่องจากเป็นส่วนหนึ่งของการบำรุงรักษาปกติอาจไม่เข้าใจว่า SQL Server ทำงานอย่างไร


2
ขอบคุณชาย คุณพูดถูก ฉันเพิ่งอ่านบล็อกของ Brent Ozar .. เขากำลังสบถในบล็อกของเขาอย่างแท้จริง "หยุดลดขนาดไฟล์ฐานข้อมูลของคุณอย่างจริงจังตอนนี้"

และเมื่อมันทำแบบเดียวกันทำไมจึงมีข้อโต้แย้งต่างกัน?
Stefan Steinegger

2

ฐานข้อมูลเริ่มต้นมีสองไฟล์

MyDb.MDF และ MyDb.LDF

ไฟล์ MDF เป็นไฟล์ข้อมูลที่มีพาร์ติชันหลักอยู่ ขึ้นอยู่กับความต้องการของคุณคุณสามารถแบ่งพาร์ติชันฐานข้อมูลออกเป็นหลายไฟล์ สิ่งนี้ทำเพื่อให้ข้อมูล (ตารางเดียวหรือหลายตาราง) สามารถขยายไฟล์หลาย ๆ ไฟล์ที่มักจะวางไว้ในฮาร์ดไดรฟ์แยกต่างหากเพื่อให้ได้ประสิทธิภาพที่สูงขึ้น

หากคุณลดขนาดฐานข้อมูลไฟล์ทั้งหมดที่เชื่อมโยงกับฐานข้อมูลนั้นจะหดตัวลง

หากคุณลดขนาดไฟล์เฉพาะไฟล์ที่เลือกเท่านั้นที่จะย่อขนาด

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

หากคุณบอกเราว่าปัญหาที่คุณกำลังประสบคืออะไรเราสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการแก้ไข


โอ้.. ออกใหม่คือเซิร์ฟเวอร์ที่ใช้งานจริงของเราใช้พื้นที่ดิสก์หมด การเพิ่มดิสก์เพิ่มเติมเป็นอุดมคติ แต่ฉันสงสัยว่าเราสามารถทำอะไรได้อีก

0

เป็นไปได้มากว่าเราจะใช้ dbcc shrinkfile sp_helpdb 'databasename' จัดทำรายการข้อมูล & ล็อกไฟล์ในฐานข้อมูล

คลิกขวาที่สตูดิโอ mnagement ไฟล์ task-> shrink-> ให้% ที่คุณสามารถย่อขนาดได้

สิ่งที่เราเคยหดมันเป็น avilable กลับบนดิสก์เป็นพื้นที่ว่าง

เช่น: ใช้ 'databasename' dbcc shrinkfile (fileid, 100)

ที่นี่ 100 คือ 100 MB

fileid สามารถรับได้จาก sp_helpdb 'databasename'

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