เมื่อใดควรจัดทำดัชนีที่ไม่เป็นคลัสเตอร์ในกลุ่มไฟล์แยกกัน


16

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

เมื่อใดควรเลือกที่จะจัดเก็บดัชนีที่ไม่ได้เป็นคลัสเตอร์ในกลุ่มไฟล์และไดรฟ์ที่แยกต่างหาก หลักฐานของ perfmon / profiler ใดที่ทำให้ฉันได้ข้อสรุปนั้น ฮาร์ดแวร์มีบทบาทในการตัดสินใจ (ไม่ว่าจะใช้ RAID / SAN บนไดรฟ์เดียวหรือไม่)

คำตอบ:


10

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

คุณจะใช้สถานการณ์สมมตินี้หากคุณต้องการประสิทธิภาพที่ดีขึ้นจากระบบของคุณหากคุณมีดิสก์ สำหรับเคาน์เตอร์ perfmon ของคุณคุณสามารถใช้Physical Disk – Avg. Disk sec/Read, Physical Disk – Avg. Disk sec/WriteมีPhysical Disk – Disk Reads/sec, Physical Disk – Disk Writes/secก่อนและหลังการเปรียบเทียบการเปลี่ยนแปลงของคุณ


1
ถ้าแทนที่จะเป็นดิสก์แบบฟิสิคัลที่แยกจากกันถ้าฉันจัดการดัชนีและข้อมูลบนดิสก์ไดรฟ์สองตัวแยกกันเช่น D: \ และ E: \ ปัจจุบันบนฮาร์ดดิสก์เดียวกันแล้วมันจะให้ประสิทธิภาพเพิ่มขึ้นบ้างไหมถ้าฉันพิจารณาความขัดแย้งที่เกี่ยวข้องกับการอ่าน จัดเก็บข้อมูลบนฮาร์ดดิสก์?
RBT

5

แน่นอนว่าการแพร่กระจาย I / O พร้อมกันของคุณระหว่างไดรฟ์ที่แตกต่างกันจะช่วยเพิ่มประสิทธิภาพ - นั่นไม่ใช่ตำนาน มันเป็นตำนานที่ว่าการทำสองครั้งจะช่วยปรับปรุงประสิทธิภาพอีกครั้ง

ถ้าคุณเป็นคนเดียวกันการแบ่งอาร์เรย์ออกเป็นสองพาร์ติชั่นและการวางดัชนีไว้ที่หนึ่งและอีกตารางหนึ่งนั้นเป็นการเสียเวลา


ฉันเห็นด้วย แต่ฉันไม่เชื่อว่านี่คือสิ่งที่เขาขอ
NTDLS

คำถามที่ถาม: "ฮาร์ดแวร์มีบทบาทในการตัดสินใจ (ไม่ว่าจะใช้ RAID / SAN บนไดรฟ์เดียว) หรือไม่" คำตอบของฉันคือถ้าคุณ RAID ไม่ต้องรำคาญกับการแยกดัชนีและตาราง ซึ่งไม่ได้จะบอกว่าคุณแน่นอนควรแม้ว่าคุณจะไม่ได้มี RAID ...
แจ็คดักลาส

5

การแยกดัชนีจากข้อมูลไปยังกลุ่มไฟล์แยกต่างหาก = การปรับปรุงประสิทธิภาพนั้นเป็นที่ถกเถียงกันอย่างมาก การปรับปรุงประสิทธิภาพ "อาจ" เกิดขึ้นหากคุณมีฮาร์ดแวร์พื้นฐานเพื่อรองรับ แต่โดยข้อเท็จจริงแล้วว่าการแยกพวกเขาไปยังกลุ่มไฟล์ที่แตกต่างกันไม่ได้ช่วยเพิ่มประสิทธิภาพให้คุณ และมันก็ไม่ใช่เรื่องง่ายที่จะวัดการเพิ่มระดับความสมบูรณ์แบบด้วยเหตุนี้

Ref: http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA-Monkey.aspx

คุณควรถามคำถามก่อน ทำไมคุณต้องทำเช่นนี้?

  1. คุณต้องการปรับปรุงประสิทธิภาพการสำรองข้อมูลโดยไม่รวมดัชนีหรือไม่
  2. คุณกำลังมองหาเพื่อปรับปรุงประสิทธิภาพของการอ่านและเขียนไปยังดัชนีเหล่านี้หรือไม่?
  3. คุณกำลังทำสิ่งนี้เพื่อการจัดการที่ดีขึ้นของการวางวัตถุพื้นฐานหรือไม่?
  4. คุณมีข้อมูลจำนวนมากที่มีความต้องการแตกต่างกันสำหรับประสิทธิภาพหรือไม่?
  5. คุณกำลังมองหาการใช้งาน SSD สำหรับดัชนีที่ไม่ทำคลัสเตอร์เพื่อปรับปรุงประสิทธิภาพ ฯลฯ ...

ฉันดูที่งานนี้เพื่อรองรับความต้องการหมายเลข # 5 ในรายการด้านบนและดูเหมือนว่าเป็นข้อเสนอที่ดีสำหรับฉันแม้ว่าเรายังไม่ได้ทำตามนั้น

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


ฉันชอบบทความของแดน :-) ฉันคิดว่ามันเกิดขึ้นกับเราทุกคนที่จะนำเข้ามาตรฐานขององค์กรเก่าและในบางเวลาเพื่อถามว่ามันมีประโยชน์
แมเรียน

1

ฉันจะบอกคุณประสบการณ์ส่วนตัวของฉันเกี่ยวกับรายการนี้ ดัชนีที่ไม่ใช่คลัสเตอร์ควรเก็บไว้ในกลุ่มไฟล์แยกต่างหากเมื่อดิสก์ไดรฟ์ปัจจุบันไม่ใหญ่พอสำหรับพื้นที่ที่ต้องการ :-) คุณสามารถหัวเราะเกี่ยวกับมัน .. แต่มันเกิดขึ้น

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

เกี่ยวกับการแสดงเราไม่เห็นอะไรผิดปกติหลังจากการย้าย แต่มันเป็นกล่องเก็บข้อมูลขนาดใหญ่ของ SAN ที่ทุกอย่างถูกจัดไว้ด้วยกัน :-)


1

โดยทั่วไป การแยกข้อมูลและดัชนีลงบนดิสก์ที่มีประสิทธิภาพคล้ายกันแยกกันสามารถเพิ่มประสิทธิภาพสำหรับการดำเนินการเขียนที่สำคัญไปยังตารางนั้นหรือการดำเนินการอ่านขนาดใหญ่ที่ใช้ดัชนีนั้น วิธีการที่คล้ายกันกับการดำเนินการ I / O อื่น ๆ เช่นตารางที่มีการแบ่งพาร์ติชันกระจายอยู่ทั่วดิสก์ที่มีอยู่จริง

อย่างไรก็ตามมันก็ขึ้นอยู่กับการจัดเก็บเป็นส่วนใหญ่ส่วนใหญ่ขึ้นอยู่กับการจัดเก็บข้อมูลตัวอย่างเช่น; หากคุณมีเซิร์ฟเวอร์ที่มี Fushion ioDrive (หรือคล้ายกัน) และยังมีดิสก์แบบหมุนแยก มันอาจเป็นประโยชน์มากกว่าที่จะเก็บทุกอย่างไว้ใน ioDrive (ยกเว้นพื้นที่มี จำกัด ) นอกจากนี้ยังมีสิ่งอื่นที่ต้องคำนึงถึง - การกำหนดค่า RAID, การกำหนดค่าที่เก็บข้อมูลเครือข่าย

ให้ผู้พิพากษาทำเครื่องหมายบางอย่างบนเซิร์ฟเวอร์ทดสอบด้วยฮาร์ดแวร์ที่คล้ายกันหรือ (เฉพาะในกรณีที่เซิร์ฟเวอร์รองไม่ใช่ตัวเลือก) ในระหว่างชั่วโมงที่มีการใช้งานมากซึ่งมีข้อมูลชั่วคราว ลิงก์ DBA-Monkey โดย Sankar ด้านบนเป็นอาหารที่ดีสำหรับความคิด

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