น่าแปลกที่กระบวนการจัดเก็บของฉันเริ่มได้รับข่าวสารเกี่ยวกับ 666 สำหรับข้อมูลอินพุตบางส่วน
กระบวนงานที่เก็บไว้ล้มเหลวในขั้นตอนสุดท้ายเมื่อพยายามแทรกแถวลงในตารางด้วยโครงสร้างต่อไปนี้:
Columns:
A_Id: PK, int
B_Id: PK, FK, int
C_Id: PK, FK, int
D_Id: PK, smallint
นี่คือตารางที่เชื่อมโยงเอนทิตีที่อ้างอิงทั้งหมดเข้าด้วยกัน
Indexes:
IX_TableName_D_id - Clustered index on D_id column
PK_TableName - Unique non-clustered index on all columns (A_Id, B_Id, C_Id, D_Id)
การกระจายตัวของดัชนีทั้งสองอยู่ในระดับต่ำ (<25%) อย่างไรก็ตามการแตกแฟรกเมนต์ PK_TableName เติบโตอย่างรวดเร็วเนื่องจากจำนวนการดำเนินการบนตารางค่อนข้างรุนแรง
ขนาดโต๊ะ:
Row count: ~80,000,000 rows
ดังนั้นเมื่อฉันพยายามเรียกใช้แบบสอบถามอย่างง่าย veeery สำหรับD_Id บางแห่งฉันได้รับข้อความต่อไปนี้:
ข่าวสารเกี่ยวกับ 666 ค่าที่ไม่ซ้ำที่สร้างขึ้นสูงสุดของระบบสำหรับกลุ่มที่ซ้ำกันนั้นเกินกว่าดัชนีที่มีพาร์ติชัน ID 422223771074560 การปล่อยและการสร้างดัชนีใหม่อาจช่วยแก้ปัญหานี้ได้ มิฉะนั้นให้ใช้คีย์การทำคลัสเตอร์อื่น
ตัวอย่างแบบสอบถาม:
INSERT INTO TableName
(A_Id,B_Id,C_Id,D_id)
VALUES (1,1,1,14)
ตัวอย่างเช่นเมื่อฉันตั้งค่า D_Id เป็นค่าบางค่า - มันล้มเหลวตัวอย่างเช่น '14' ถ้าฉันตั้งค่า D_ID เป็นค่าอื่น ๆ (1,2,3, ... 13, 15,16, ... ) แบบสอบถามจะทำงานได้ดี
ฉันสงสัยว่ามีบางอย่างไม่ดีที่เกิดขึ้นกับดัชนี ... แต่ฉันไม่สามารถไปถึงจุดต่ำสุดของสิ่งนี้ ... :( ทำไมมันถึงล้มเหลว?
TRUNCATE TABLE
รีเซ็ตตัวระบุซ้ำหรือไม่