ฐานข้อมูล SQL Server 2017 Enterprise CU16 14.0.3076.1
เราเพิ่งพยายามเปลี่ยนจากดัชนีเริ่มต้นสร้างงานบำรุงรักษาไป Ola IndexOptimize
Hallengren งานสร้างดัชนีเริ่มต้นใหม่ทำงานเป็นเวลาสองสามเดือนโดยไม่มีปัญหาใด ๆ และแบบสอบถามและการปรับปรุงกำลังทำงานด้วยเวลาดำเนินการที่ยอมรับได้ หลังจากทำงานIndexOptimize
บนฐานข้อมูล:
EXECUTE dbo.IndexOptimize
@Databases = 'USER_DATABASES',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30,
@UpdateStatistics = 'ALL',
@OnlyModifiedStatistics = 'Y'
ประสิทธิภาพลดลงอย่างมาก คำสั่งการปรับปรุงที่ใช้เวลา 100 มิลลิวินาทีก่อนที่จะIndexOptimize
ใช้เวลา 78.000ms หลังจากนั้น (โดยใช้แผนเหมือนกัน) และข้อความค้นหาก็มีประสิทธิภาพที่แย่กว่านั้นอีกหลายคำสั่ง
เนื่องจากสิ่งนี้ยังคงเป็นฐานข้อมูลทดสอบ (เรากำลังย้ายระบบการผลิตจาก Oracle) เราจึงเปลี่ยนกลับเป็นข้อมูลสำรองและปิดการใช้งานIndexOptimize
และทุกสิ่งกลับสู่ปกติ
อย่างไรก็ตามเราต้องการที่จะเข้าใจสิ่งที่IndexOptimize
แตกต่างจาก "ปกติ" Index Rebuild
ที่อาจทำให้ประสิทธิภาพการทำงานลดลงอย่างมากเพื่อให้แน่ใจว่าเราหลีกเลี่ยงมันเมื่อเราไปผลิต ข้อเสนอแนะเกี่ยวกับสิ่งที่จะมองหาจะได้รับการชื่นชมอย่างมาก
แผนการดำเนินการสำหรับคำสั่งการปรับปรุงเมื่อมันช้า เช่น
หลังจาก IndexOptimize
แผนการดำเนินการจริง (มาโดยเร็ว)
ฉันไม่สามารถแยกความแตกต่างได้
วางแผนสำหรับการค้นหาเดียวกันเมื่อวางแผนการดำเนินการจริงที่รวดเร็ว