การสร้างดัชนีบนตารางที่ยุ่งมาก


11

เรามีโต๊ะที่มีจำนวนมากinsert\selectทุกครั้ง (เช่น 100 เครื่องที่แทรกการอัพเดททุกวินาที)

วิธีที่ดีที่สุดในการสร้างดัชนีบนตารางที่ไม่สามารถล็อคไม่ได้เป็นวินาทีคืออะไร?

ถ้าฉันสร้างดัชนีฉันแน่ใจว่ามันจะล็อคคำขอและฉันทำไม่ได้

มันเป็นตารางขนาดใหญ่ที่มี 1 ล้านแถว +

คำตอบ:


12

ไม่มีตัวเลือกดังกล่าวเป็นCREATE INDEX WITH (NOLOCK)(และแม้กระทั่งNOLOCKในแบบสอบถามจะล็อคเพียงน้อยกว่าโดยไม่มีคำใบ้)

สิ่งที่ดีที่สุดที่คุณจะทำคือWITH (ONLINE = ON)ยังคงใช้การล็อกที่จุดเริ่มต้นและจุดสิ้นสุดของการดำเนินการ (ทั้งที่เกี่ยวข้องกับการคอมไพล์แผนที่เกี่ยวข้องกับตาราง - ดูโพสต์บล็อกนี้โดย Paul Randal สำหรับรายละเอียดเพิ่มเติม )

สิ่งนี้จะลดผลกระทบของการสร้างดัชนีในแอปพลิเคชันของคุณอย่างมีนัยสำคัญ แต่ไม่มีวิธีการปฏิบัติใดที่จะกำจัดผลกระทบนั้นได้อย่างสมบูรณ์ นอกจากนี้ฟีเจอร์นี้ไม่ฟรี: ต้องใช้ Enterprise Edition

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