มีตัวเลือก SQL Server มากมายที่สามารถเปิดใช้งานสำหรับฐานข้อมูลและหนึ่งในตัวเลือกที่เข้าใจผิดมากที่สุดคือการย่อขนาดอัตโนมัติ ปลอดภัยไหม ถ้าไม่ทำไมไม่
มีตัวเลือก SQL Server มากมายที่สามารถเปิดใช้งานสำหรับฐานข้อมูลและหนึ่งในตัวเลือกที่เข้าใจผิดมากที่สุดคือการย่อขนาดอัตโนมัติ ปลอดภัยไหม ถ้าไม่ทำไมไม่
คำตอบ:
(แต่เดิมฉันถูกถามว่าเป็นคำถามปกติ แต่ก็พบวิธีการที่ถูกต้อง - ขอบคุณ BrentO)
ไม่ไม่เคย.
ฉันเจอหลายครั้งแล้วที่ ServerFault และต้องการเข้าถึงผู้ชมที่กว้างด้วยคำแนะนำที่ดี หากผู้คนขมวดคิ้วในการทำสิ่งต่าง ๆ ลงคะแนนและฉันจะลบสิ่งนี้ด้วยความยินดี
ย่อขนาดอัตโนมัติเป็นการตั้งค่าฐานข้อมูลทั่วไปที่เปิดใช้งาน ดูเหมือนว่าเป็นความคิดที่ดี - ลบพื้นที่พิเศษออกจากฐานข้อมูล มี 'DBA ที่ไม่สมัครใจ' อยู่มากมาย (คิดว่า TFS, SharePoint, BizTalk หรือ SQL Server เก่าทั่วไป) ที่อาจไม่รู้ว่าการย่อขนาดอัตโนมัติเป็นสิ่งที่เลวร้าย
ในขณะที่ Microsoft ฉันเคยเป็นเจ้าของ SQL Server Storage Engine และพยายามที่จะลบคุณสมบัติการย่อขนาดอัตโนมัติ แต่ต้องอยู่เพื่อความเข้ากันได้ย้อนหลัง
ทำไมการย่อขนาดอัตโนมัติถึงไม่ดี
ฐานข้อมูลมีแนวโน้มที่จะเติบโตอีกครั้งดังนั้นทำไมหดตัวลง
ฉันโพสต์บล็อกสักครู่แล้วซึ่งมีตัวอย่างสคริปต์ SQL ที่แสดงปัญหาที่เกิดขึ้นและอธิบายรายละเอียดเพิ่มเติมอีกเล็กน้อย ดูหดอัตโนมัติ - ปิด! (ไม่มีโฆษณาหรือขยะแบบนั้นในบล็อกของฉัน) อย่าสับสนกับการลดขนาดไฟล์บันทึกซึ่งมีประโยชน์และจำเป็นในบางโอกาส
ดังนั้นโปรดทำด้วยตัวเองดูที่การตั้งค่าฐานข้อมูลของคุณ คุณไม่ควรลดขนาดแผนการบำรุงรักษาด้วยเหตุผลเดียวกันทั้งหมด กระจายคำให้เพื่อนร่วมงานของคุณ
แก้ไข: ฉันควรเพิ่มสิ่งนี้เตือนโดยคำตอบที่สอง - มีความเข้าใจผิดทั่วไปว่าการขัดจังหวะการหดตัวอาจทำให้เกิดความเสียหาย ไม่มันจะไม่ ฉันเคยเป็นเจ้าของหดตัวรหัสใน SQL Server - มันย้อนกลับย้ายหน้าปัจจุบันที่จะทำถ้าถูกขัดจังหวะ
หวังว่านี่จะช่วยได้!
แน่นอน Paul ถูกต้อง
ดู DB ทั้งหมดและการตั้งค่า autoshrink ของพวกเขา หากคุณมีฐานข้อมูลจำนวนมากหนึ่งจะแอบเข้ามา
sp_msforeachdb @command1 = 'Select ''[?]'',DATABASEPROPERTYEX(''?'',''IsAutoShrink'')'
อยู่ใน dmv ที่ไหนสักแห่ง .... ฉันสงสัย
ไม่ใช่ "ไม่ปลอดภัย" - จะไม่สร้างความเสียหายใด ๆ
แต่ไม่แนะนำสำหรับสภาพแวดล้อมการผลิตที่ฐานข้อมูลอาจตัดสินใจที่จะออกไปและเริ่มต้นการฝึกซ้อมการจัดเรียงที่มีราคาแพงก่อนที่กองคำขอจะเข้ามาทำให้การร้องขอเหล่านั้นใช้เวลานานขึ้น คุณจะดีกว่ามากเมื่อใช้การดำเนินการย่อการจัดตารางเวลาพร้อมกับการดำเนินการบำรุงรักษาอื่น ๆ เช่นการสำรองข้อมูล (ตามจริงหลังจากการสำรองข้อมูล - มันจะเพิ่มเติมจากบันทึกธุรกรรมในแบบนั้น) หรือไม่หดตัวเลยเว้นแต่ว่าจะมีปัญหาเรื่องการเติบโต - คุณสามารถตั้งค่าจอภาพเพื่อแจ้งให้คุณทราบเมื่อพื้นที่ที่จัดสรรที่ไม่ได้ใช้เพิ่มขึ้นเกินอัตราส่วนหรือขนาดคงที่
IIRC ตัวเลือกจะปิดใช้งานตามค่าเริ่มต้นสำหรับฐานข้อมูลทั้งหมดในรุ่น MSSQL ทั้งหมดยกเว้น Express
มีเอกสารทางเทคนิคที่มีอยู่ใน TechNet ที่อธิบายการบำรุงรักษา SQL ในรายละเอียดเพิ่มเติม
ฉันเห็นเซิร์ฟเวอร์ SQL ที่เปิดใช้งานทั้ง Autogrow และ Autoshrink เซิร์ฟเวอร์ (ค่อนข้างทรงพลัง) นี้ช้ามากเพราะทุกสิ่งที่ทำตลอดทั้งวันหดตัวและขยายฐานข้อมูลไฟล์ Autoshrink มีประโยชน์ แต่ฉันขอแนะนำสองสิ่ง:
ครั้งเดียวที่ฉันถูกบังคับให้ลดขนาดฐานข้อมูลคือการรีเฟรชสำเนาบนเซิร์ฟเวอร์ทดสอบที่มีพื้นที่ดิสก์น้อยลง (ไม่เพียงพอที่จะเก็บฐานข้อมูลการผลิต)
ไฟล์ฐานข้อมูลการผลิตมีพื้นที่ว่างมากมายโชคไม่ดีที่คุณต้องกู้คืนฐานข้อมูลที่มีขนาดไฟล์เท่ากันกับที่คุณสำรองไว้ ดังนั้นจึงไม่มีทางเลือกนอกจากต้องลดขนาดการผลิตก่อนที่จะสำรองข้อมูล (การหดตัวใช้เวลานานทรัพยากรจำนวนมากถูกใช้ไปและการเติบโตของบันทึกธุรกรรมที่ตามมาเป็นปัญหา)
นอกจากนี้ลองดูวิดีโอบทช่วยสอนนี้ ....
ดู Paul Randal แสดงให้เห็นว่าการหดตัวและการย่อขนาดอัตโนมัติสามารถทำให้เกิดปัญหาการแตกแฟรกเมนต์ที่ร้ายแรงสำหรับฐานข้อมูลของคุณได้อย่างไร http://wtv.watchtechvideos.com/topic194.html