การจัดทำดัชนีแบบคลัสเตอร์ตอนนี้ต้อง - ทำไม?


9

ก่อนหน้านี้ไม่มีข้อสรุปสำหรับฉันที่จะถกเถียง / อภิปรายว่าจะเข้าร่วม / หลีกเลี่ยงดัชนีกลุ่ม (เสมอ) หรือไม่

ฉันเข้าใจว่าบางครั้งพวกเขาจะต้องใช้งานด้วยวัตถุประสงค์และบริบทที่เหมาะสม

ความต้องการดัชนีคลัสเตอร์ SQL Azure ฐานข้อมูล :

"SQL Azure ไม่สนับสนุนตารางที่ไม่มีดัชนีคลัสเตอร์ตารางต้องมีดัชนีคลัสเตอร์หากตารางถูกสร้างขึ้นโดยไม่มีข้อ จำกัด แบบคลัสเตอร์ดัชนีคลัสเตอร์จะต้องสร้างขึ้นก่อนที่จะอนุญาตให้มีการแทรกได้"

ไม่พอดีกับข้อสรุปเหตุผลและคำอธิบายก่อนหน้า

เหตุผลที่ฉันพลาดจากคำอธิบายก่อนหน้านี้ของการจัดทำดัชนีแพร่หลายของกลุ่มคลัสเตอร์โดยไม่มีข้อยกเว้นคืออะไร?


4
SQL Azure นั้นแตกต่างจาก SQL Server อย่างที่คุณทราบ Azure เป็นฐานข้อมูลแบบกระจายการจัดเก็บข้อมูลของคุณในเครื่องทางกายภาพมากกว่าหนึ่งเครื่อง นั่นเป็นเหตุผล

1
โปรดทราบว่าใน v12 ของบริการฐานข้อมูล Azure SQL คุณอาจมีตารางที่ไม่มีดัชนีคลัสเตอร์
ทรอยล่า

คำตอบ:


11

อ่านInside SQL Azure :

SQL Azure จัดเตรียมฐานข้อมูลเชิงตรรกะสำหรับการจัดเก็บข้อมูลแอปพลิเคชัน ในความเป็นจริงข้อมูลของสมาชิกแต่ละคนจะถูกจัดเก็บจริง ๆ หลายครั้งจำลองแบบข้ามฐานข้อมูล SQL Server สามฐานซึ่งกระจายอยู่ทั่วเซิร์ฟเวอร์จริงสามตัวในศูนย์ข้อมูลเดียว สมาชิกหลายคนอาจแบ่งปันฐานข้อมูลทางกายภาพเดียวกัน

ต้องใช้คีย์แบบคลัสเตอร์เพื่อให้ข้อมูลจำลองของคุณทั้งสามสามารถซิงค์กันได้ คีย์ W / oa เป็นไปไม่ได้ที่จะรู้ว่าแถวไหนได้รับการปรับปรุง ฮีป (ตารางที่มีดัชนีคลัสเตอร์คลัสเตอร์ wa) มี 'คีย์' ทางกายภาพเท่านั้น (fileid: pageid: slot) และเนื่องจาก 3 เรพลิคาของฐานข้อมูลโลจิคัลของคุณแชร์ฐานข้อมูลทางกายภาพกับฐานข้อมูลโลจิคัลอื่นที่อยู่ทางกายภาพบนเซิร์ฟเวอร์หนึ่งไม่มีความหมาย เรพลิกาดังนั้นจึงไม่สามารถทำซ้ำฮีพได้


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

3
จากเอกสารที่เชื่อมโยง: "เทคโนโลยีความพร้อมใช้งานสูงและการจำลองแบบพื้นฐานใน SQL Azure ขึ้นอยู่กับการจำลองแถว B-Tree" ดังนั้นแม้ว่าฮีปจะมีคีย์ NC คุณสามารถทำซ้ำ NC แต่ไม่ใช่ฮีปเอง
Remus Rusanu

แหล่งข้อมูลอื่น: azure.microsoft.com/en-us/blog/why-do-i-need-a-clustered-index
usr

1

Azure เป็นระบบคลาวด์แบบกระจายบนเซิร์ฟเวอร์ระยะไกล ข้อมูลจะถูกเก็บไว้ในไดรฟ์ / เซิร์ฟเวอร์หลายตัวและจะไม่มีประสิทธิภาพมากในการทำสิ่งนี้บนฮีป (เนื่องจากระบบจะต้องทราบว่าเครื่องใดที่ต้องตรวจสอบและไม่มีดัชนีคลัสเตอร์นี้เป็นการดำเนินการที่ใช้ทรัพยากรมาก) .

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


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