GATHER_PLAN_STATISTICS hint เครื่องมือช่วยเหลือสำหรับนัก Tuning SQL


GATHER_PLAN_STATISTICS

มันเป็นสิ่งที่เราต้องให้ความสนใจเป็นอย่างมากหลังจากที่เราทำการ Tuning SQL เพื่อเป็นการยืนยันผลลัพธ์ว่า Optimizer ทำงานได้อย่างถูกต้องหรือไม่? แต่เราจะรู้ได้ยังไงหล่ะ?

เราจะรู้ได้อย่างไรว่า Cardinality Estimates บน Execution plan นั้นแม่นยำเพียงพอหรือไม่?

มันน่าจะง่ายกว่าถ้าเราจะตอบคำถามนี้ด้วยตัวอย่างข้างล่างนี้ครับ ผมจะใช้คิวรี่จากบทความที่แล้วมาช่วยในการแสดงตัวอย่างให้ดูนะครับ

Continue Reading

Advertisements

Cardinality Feedback คิดผิดกันดีนัก เดียวพี่คิดเอง!!!


Cardinality Feedback

ช่วงนี้รัวๆ บทความให้เลยละกันครับ คันไม้คันมือมากกกกกก ก็วันนี้จัดให้อีกซักหนึ่งเรื่องแล้วกันนะครับเกี่ยวกับอีกหนึ่งความสามารถใน Oracle 11gR2 นั่นคือ Cardinality Feedback นั่นเองครับผม

Cardinality Feedback คืออะไร? ทำงานอย่างไร?

Cardinality Feedback ถูกนำมาใช้ครั้งแรกใน Oracle 11gR2 จุดประสงค์ก็เพื่อช่วยในเรื่องการ Generate execution plan ให้ดีขึ้นในคิวรี่ที่มีการรันบ่อยๆ และสำหรับคิวรี่ที่มีการคำนวนผลลัพธ์ที่ไม่ดี ซึ่งนั่นทำให้ Optimizer อาจจะคำนวนผิดพลาดได้ในหลายๆ สาเหตุ เช่น Statistics ที่ผิดพลาด, เส้นทางของคิวรี่ที่ซับซ้อนเกินความจำเป็น ไม่ว่าจะด้วยเหตุผลใดที่ทำให้เกิดการคำนวนผิดพลาด Cardinality Feedback นี่เองจะเข้ามาช่วยแก้ปัญหาตรงนี้

Continue Reading

Extended Statistics กับความสามารถที่เพิ่มขึ้นของ Optimizer


mac-glasses

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

Continue Reading

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


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

Continue Reading

Adaptive direct path read บน Oracle 11g คืออะไร?


สวัสดีครับ! ก็ไม่ได้เขียนบทความซะนานต้องขออภัยจริงๆ เพราะว่าช่วงนี้งานโถมเข้าใส่แบบไม่ยั้ง ฮ่าๆ วันนี้เลยบอกตัวเองว่างานหนักยังไงก็ต้องเขียนบทความใหม่ให้ได้ โดยส่วนตัวถือเป็นความรู้ใหม่ของตัวเองด้วย เลยอยากให้ทุกคน(ที่เผลอเข้ามาอ่าน) ได้รับรู้ไปกับผมด้วยครับ และในวันนี้ผมจะพูดถึง Adaptive direct path read บน Oracle 11g มันคืออะไร? ดีหรือไม่อย่างไร? ลองอ่านกันดูครับ:)

Continue Reading

Optimizer_mode ค่าไหน? ควรใช้เมื่อใด?


บนฐานข้อมูล Oracle นั้น มีพารามิเตอร์บางตัวที่เป็นดั่งกระสุนเงิน ที่สามารถสร้าง Impact กับประสิทธิภาพบนฐานข้อมูลได้ในระดับกว้าง หนึ่งในกระสุนเงินเพื่อกำราบพวกคิวรี่ผีดิบคือ Optimizer_mode ครับ

ผลกระทบของ Optimizer_mode ที่ทำให้ Execution plan เปลี่ยน!

Continue Reading

Pareto’s rule (กฎ 80/20) กับการ Tuning database


สวัสดีครับ ห่างหายกันไปนานพอสมควรกับช่วงวันหยุดยาวเทศกาลสงกรานต์และอากาศร้อนๆ ของประเทศไทย เลยทำให้ผมยิ่งไม่มีสมาธิในการทำอะไรซักเท่าไรนะครับผม ก็วันนี้น่าจะเป็นวันดีที่จะกลับมาเขียนบทความอีกครั้งครับ วันนี้ผมจะนำเอาหลักการหนึ่งที่ถูกใช้กันอย่างแพร่หลายและได้รับยอมรับกันทั่วโลก ซึ่งผมคิดว่าน่าจะมีประโยชน์ต่อการนำมาประยุกต์ใช้ในการจูนนิ่งฐานข้อมูลมาแบ่งปันกันครับ หลักการที่ผมจะพูดถึงนี้มีชื่อว่า “หลักการของพาเรโต (Pareto’s rule)” หรือเรียกกันอย่างแพร่หลายว่า “กฏ 80/20” นั่นเองครับ

Continue Reading