Page Splits และ Fragmentation SQL Server Indexes : สอน คำสั่ง ของ Page Splits และ Fragmentation, เรียน คำสั่ง ของ Page Splits และ Fragmentation
 
  • Page Splits และ Fragmentation Page Splits และ Fragmentation
  • subject :
    Page Splits และ Fragmentation

    content :
    > เมื่อมีการจัดเก็บข้อมูลแถวใหม่เข้าไป ทำให้ต้องมีการจัดลำดับ Indexes Page ใหม่ทุกครั้ง
    > โดยความยุ่งยากของการทำงานนี้ ได้แก่ เมื่อ Indexes Page ได้จัดเก็บข้อมูลไว้เต็มแล้ว ทำให้ต้องมีการแยก
    ออกมาเป็น Page ใหม่ ( หรือเรียกว่า Page Splits ) ซึ่งเป็นการต่อยอดระหว่าง Page เดิมกับ Page ใหม่เท่าๆกัน
    อีกทั้งการทำ Page Split นั้นอาจจะมีผลกระทบไปยัง Page อื่นๆอีกด้วย ซึ่งทำให้เกิด Page Splits ต่อๆไปตามลำดับ
    สำหรับวิธีการลดการเกิด Page Split ทำได้โดยการกำหนดค่า Fill Factor เพื่อใช้กันพื้นที่ส่วนหนึ่ง
    ไว้ให้กับค่า Indexes ที่ถูก Insert เข้าไป
    > เมื่อมีการลบข้อมูลแล้ว ถ้ามีการกำหนดค่า Fill Factor เพื่อกันที่ว่างไว้อยู่เป็นจำนวนมาก
    จะทำให้เกิดลักษณะที่เรียกว่า Fragmentation อันเป็นผลทำให้ประสิทธิภาพการค้นหาไม่ดีเท่าที่ควร
    เนื่องจากระบบต้องไล่หาข้อมูลในแต่ละ Page ที่มีข้อมูลอยู่น้อย โอกาสที่จะพบข้อมูลในระดับลึกๆ
    ต้องเสียเวลาจำนวนมาก
    > วิธีการของการปรับปรุงประสิทธิภาพที่ดีที่สุดหลังพบว่ามี Fragmentation ก็คือการลบ Indexes แล้วสร้างใหม่
    แต่วิธีการนี้จะยังเพิ่ม Overhead ให้กับระบบมากขึ้น สำหรับตารางที่มีข้อมูลอยู่เป็นจำนวนมาก
    และหากว่ามีทั้ง Clustered Indexes และ Non-Clustered Indexes อยู่ด้วยกัน แล้วมีการลบ Clustered Indexes ทิ้ง
    จะทำให้ Non-Clustered Indexes ต้องจัดโครงสร้างใหม่ เพื่อแก้ไขข้อมูลในระดับ Leaf ให้ Pointer ไปที่แถวข้อมูลของตารางจริง
    และเมื่อทำการสร้าง Clustered Indexes ขึ้นมาอีกที จะทำให้ Leaf ของ Non-Clustered Indexes ต้องกลับไป
    Pointer ที่ Leaf ของ Clustered Indexes อีกครั้ง

       

0 Comment

  • Have no comment.

Comment Reference

 
 
 
Share This Topic Login with Facebook