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

Selectivity จงมา!!! การจัดลำดับ Column บน Index


ห่างหายไปนานเลยนะครับ พอดีช่วงนี้งานเยอะมากเลยไม่มีเวลามาแบ่งปันข้อมูลสาระดีๆ กันเลย ก็วันนี้ผมจะนำเสนอเกี่ยวกับความสำคัญในการจัดลำดับก่อนหลังในการสร้าง index เพื่อให้ไปประสิทธิภาพที่ดีที่สุดมาฝากกันครับ

จากบทความเก่าที่ผมเคยเขียนเกี่ยวกับค่า Selectivity บน Column หรือค่าเฉพาะ (Distinct value) นั้นสำคัญมากสำหรับการสร้าง Index ที่ดี ยิ่งมีค่าเฉพาะมากหรือเท่ากับจำนวนบรรทัด นั่นเท่ากับค่า Selectivity ที่เท่ากับ 100% และเราจะได้รับประสิทธิภาพเต็มที่จาก Index ตัวนั้นๆ

Continue Reading

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


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

Continue Reading