หน้าต่างเวลากลางคืน 24x7


19

ฉันจะหาแหล่งข้อมูลเกี่ยวกับวิธีย้ายการปฏิบัติการ 24x7 ไปได้ดีกว่าที่ใด บริษัท ใหญ่ที่มีฐานข้อมูลขนาดใหญ่ทำสิ่งนี้ได้อย่างไร งานยามค่ำคืนของเราเช่น

  1. ล้างข้อมูลเก่า
  2. Reindex
  3. อัปเดตสถิติ

ดูเหมือนว่าทั้งหมดจะก่อให้เกิดผลกระทบร้ายแรงต่อระบบของเรา ( เช่นผู้ใช้ออนไลน์และฟีดข้อมูลเรียลไทม์) ฉันได้ดูหนังสือที่เกี่ยวข้องกับเรื่องนี้ใน Amazon แล้วและยังไม่พบอะไรเลย


คุณต้องการย้ายฐานข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังอีกวิธีหนึ่งหรือดีกว่าเพื่อจัดการผลกระทบของงานยามค่ำคืนของคุณหรือไม่?
Mike Fal

วิธีการจัดการผลกระทบของงานยามค่ำคืน? เช่นวิธีการลดหรือกำจัด "หน้าต่างชุดงาน" ทุกค่ำคืน
NealWalters

2
@NealWalters คุณใช้ SQL Server รุ่นใดอยู่ (การสร้างดัชนีออนไลน์และการแบ่งพาร์ติชันตารางเพื่อสลับข้อมูลเก่ามีอยู่ใน Enterprise Edition)
Martin Smith

1
คุณใช้ SQL Server เวอร์ชันใด องค์กร / มาตรฐาน? Enterprise มีคุณสมบัติบางอย่างที่ช่วยให้คุณสามารถดำเนินการบางอย่างเป็นออนไลน์โดยมีผลกระทบต่อผู้ใช้น้อยที่สุด
Kin Shah

1
@NealWalters ตรวจสอบการแบ่ง DBCC CHECKDB ในช่วงหลายวันให้รายละเอียดเพิ่มเติม แม้ว่าจะเป็นมากกว่าสำหรับ CHECKDB แต่จะช่วยให้คุณได้รับแนวคิดเพิ่มเติม แจ้งให้เราทราบว่าคุณใช้ฉบับใดเพื่อให้ผู้คนที่นี่ช่วยคุณได้ดีขึ้น
Kin Shah

คำตอบ:


27

การบำรุงรักษาฐานข้อมูล 24x7 เป็นหัวข้อที่ค่อนข้างใหญ่และมีตัวเลือกให้เลือกมากมาย หัวข้อกว้าง ๆ นี้มีหลายสิ่งที่ต้องพิจารณา แต่เราสามารถลองและสัมผัสกับจุดสูงสุดบางอย่าง

สิ่งแรกที่คุณจะต้องระบุก็คือในขณะที่การดำเนินการจำนวนมากเป็น 24x7 มักจะมีกิจกรรมต่ำ คุณสามารถใช้ประโยชน์จากเวลาเหล่านี้ในการบำรุงรักษาเพื่อลดการรบกวนที่คุณมีในฐานข้อมูล อย่างที่สองคือคุณจะต้องจองเวลาสำหรับการหยุดทำงานที่สมบูรณ์ (สำหรับเซอร์วิสแพ็คหรือการย้ายฐานข้อมูล) ดังนั้นคุณจะต้องเจรจากับหน้าต่างการบำรุงรักษาแบบเต็มรูปแบบกับฝ่ายบริหารของคุณ สำหรับรายการเฉพาะคุณจะต้องพิจารณาและวางแผนสำหรับแต่ละรายการรวมถึงใช้ประโยชน์จากเครื่องมือของคุณอย่างเหมาะสม สิ่งสำคัญคือคุณต้องวางแผนแต่ละสิ่งเหล่านี้ตัวอย่างใด ๆ ที่ฉันให้นั้นมีมาก "ไมล์ของคุณอาจแตกต่าง"

การสำรองข้อมูล

โดยทั่วไปการสำรองข้อมูลจะไม่ส่งผลกระทบอย่างมากต่อปริมาณงาน แต่ต้องคำนึงถึงเนื่องจากสามารถใช้งาน I / O ได้จำนวนมาก คุณจะต้องการกำหนดเวลาเหล่านี้อย่างเหมาะสมและติดตามเวลาที่ใช้ในการดำเนินการให้เสร็จสมบูรณ์ อุปสรรค์ที่ใหญ่ที่สุดในที่นี้คือในการดำเนินการตลอด 24 ชั่วโมงทุกวันคุณจะไม่สามารถทำการสำรองข้อมูลเต็มรูปแบบทุกคืนของสัปดาห์ คุณจะต้องวางแผนเมื่อไหร่ที่คุณสามารถทำ fulls เมื่อคุณรับส่วนต่างและระยะเวลาการเก็บรักษาทั้งสองอย่างนี้ร่วมกับการสำรองข้อมูลบันทึกของคุณ

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

การบำรุงรักษาดัชนี / สถิติ

นี่เป็นประเภทการบำรุงรักษาทั่วไปที่คุณต้องจัดการด้วย คุณไม่สามารถหลีกเลี่ยงได้ แต่คุณสามารถลดผลกระทบได้ กฎเริ่มต้นง่ายๆคือคุณควรทำการบำรุงรักษาเฉพาะวัตถุที่จำเป็นเท่านั้น หลักเกณฑ์ทั่วไปที่จะสร้างเพียงดัชนีที่มีมากกว่า 30% แยกส่วนและมีขนาดใหญ่กว่า 1,000 หน้า หากคุณมีสถิติการอัปเดตอัตโนมัติสิ่งนี้จะจัดการการบำรุงรักษาสถิติส่วนใหญ่ของคุณ แต่งานประจำคืนเพื่อให้ข้อมูลต่าง ๆ ตรงกันไม่ใช่ความคิดที่ไม่ดี

หากคุณมี Enterprise Edition คุณยังสามารถเข้าถึงตัวเลือกอื่น ๆ สำหรับจัดการการบำรุงรักษา สำคัญที่สุดคือการสร้างดัชนีออนไลน์ซึ่งจะช่วยให้คุณสามารถสร้างดัชนีใหม่ได้ในขณะที่ยังคงมีการใช้งานอยู่ (โดยพื้นฐานแล้วมันจะสร้างดัชนีดัชนีแบบเคียงข้างกัน นอกจากนี้คุณยังสามารถใช้ประโยชน์จากการแบ่งพาร์ติชันสำหรับตาราง "ใหญ่" เพื่อลดระยะเวลาการสร้างใหม่ที่จำเป็น

ทางออกที่ดีที่สุดของคุณสำหรับประเภทของการบำรุงรักษานี้ถ้าคุณไม่ได้มีสคริปต์ที่กำหนดเองที่จัดการปฏิบัติที่ดีที่สุดเหล่านี้คือการใช้Ola Hallengren ของสคริปต์การบำรุงรักษา สิ่งเหล่านี้ค่อนข้างง่ายต่อการติดตั้งและกำหนดค่าและมีแนวทางเหล่านี้มากมาย

การตรวจสอบความสอดคล้องของ DBCC

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

  • PHYSICAL_ONLY- การรันตัวเลือกนี้จะตรวจสอบฐานข้อมูลของคุณในระดับหน้าทางกายภาพและหลีกเลี่ยงการตรวจสอบแบบเต็มรูปแบบยิ่งขึ้น สิ่งนี้จะครอบคลุมถึงการระบุประเภทของการทุจริตที่เป็นไปได้มากที่สุด
  • การตรวจสอบสำเนาที่คืนค่า - หากคุณมีพื้นที่คุณสามารถคืนค่าฐานข้อมูลไปยังอินสแตนซ์อื่นและเรียกใช้การตรวจสอบ DBCC เทียบกับสำเนาที่คืนค่า สิ่งนี้จะบอกเล่าเรื่องราวเดียวกันเกี่ยวกับฐานข้อมูลสดของคุณ แต่แน่นอนว่าคุณจะไม่เข้าไปยุ่งกับกิจกรรม ทางเลือกอื่น ๆ ที่นี่กำลังเรียกใช้ DBCC เทียบกับสำเนาที่จัดส่งมาหรือ db ที่มิร์เรอร์

โพสต์บล็อกนี้ให้รายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกของคุณ

งานแบทช์ / ETL

สิ่งนี้เกิดขึ้นกับวิธีที่คุณออกแบบกระบวนการของคุณ ETL ของคุณสามารถแทรกแซงตาราง OLTP แบบสดๆ (เช่นเดียวกับแอปพลิเคชันอื่น ๆ ) เสมอดังนั้นควรคำนึงถึงคีย์บางอย่าง:

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

ข้อสรุป

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

แหล่งข้อมูลเพิ่มเติม:

SQL Skills VLDB แนวทางปฏิบัติที่ดีที่สุดในการบำรุงรักษา


ตกลงตอบสนองดีเยี่ยมมีประโยชน์โดยละเอียด ขอบคุณ! เรากำลังทำงานผ่านมัน
NealWalters

อีกปัจจัยหนึ่งที่เรากำลังดำเนินการคือการย้ายข้อมูลเก่า ๆ จำนวนมากไปยัง ODS (Operational Data Store) เพื่อให้ฐานข้อมูลหลักมีความสวยงามยิ่งขึ้น นอกจากนี้เรายังพบว่า "สถิติการอัปเดต" กำลังทำงานประมาณ 2 ถึง 2.5 ชั่วโมงทุกเช้าและดูเหมือนว่าจะทำให้ประสิทธิภาพโดยรวมช้าลง "แนวปฏิบัติที่ดีที่สุด" ในการเรียกใช้ Update-Stats ในแต่ละวันหรือไม่
NealWalters

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