Fragment และผลกระทบต่อ Full table scan


ผมว่าหลายๆ คนเคยเจอเหตุการณ์ประมาณว่า batch ที่ทำงานในตอนกลางคืนช้า โดยสิ่งที่พยายามแก้ไขไปนั่นคือการทำการลบข้อมูลเก่าๆ ทิ้งไปเพื่อทำให้ข้อมูลน้อยลง โดยหลักความคิดแล้วน่าจะช่วยทำให้เร็วขึ้นได้จริง… แต่มันไม่เป็นอย่างนั้นหนะซิ เพราะเมื่อเราทำการลบข้อมูลจากตารางไปแล้วแม้จะเยอะแค่ไหนก็ตาม แต่ในตัว Physical level ของฐานข้อมูลเองยังมองว่าพื้นที่ว่างที่เคยเก็บข้อมูลของตารางนั้นๆ ยังอยู่ เราเรียกพื้นที่ว่างเหล่านั้นว่า Fragment นั่นเองครับ

Continue Reading

Advertisements

Materialized view สุดยอดอาวุธลับบน Oracle DBMS


เคยเจอปัญหาแบบนี้กันไหมครับ? มีลูกค้าโทรเข้ามาว่า “งานออนไลน์ช้ามากกกกกกกกกกกกกกก” ส่วนเราเองก็ตรวจสอบปัญหาแล้วพบว่าปัญหามันเกิดจากคิวรี่เดิมที่อาจจะใช้ทรัพยากรเยอะพอสมควร ที่ถูกเรียกซ้ำๆ เพราะเป็นงานปกติของลูกค้า นอกจากการปรับจูนคิวรี่แล้ว เราจะหาทางแก้ไขมันอย่างไรได้อีกนะ? วันนี้ผมเอาอาวุธลับอีกตัวมาเสนอขายทุกท่านครับ นั่นคือ Mview หรือชื่อเต็มของมันเรียกว่า Materialized view นั่นเอง

Continue Reading

Execution plan เหตุใดเจ้าจึงเปลี่ยนไป?


สวัสดีครับ ช่วงนี้นานๆ เข้ามาเขียนซักทีนึงนะครับ แล้ววันนี้ผมก็จะมาบอกเล่าเรื่องราวเกี่ยวกับสิ่งที่เป็นหัวใจสำคัญสำหรับการ Tuning นั้นคือ Execution plan ของแต่ละ SQL statement ว่าเพราะสาเหตุใดบ้างที่ทำให้การคิวรี่ข้อมูลรู้สึกช้าลงหรือแตกต่างออกไปทั้งที่ SQL statement ก็ยังเหมือนเดิม ลองมาดูกันครับ

Continue Reading