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


mac-glasses

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

Continue Reading

Advertisements

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


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

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

Continue Reading

SKEWONLY vs SIZE AUTO อะไรควรใช้ตอนไหน


เมื่อบทความที่แล้วผมได้พูดถึงตารางที่มีการเก็บ Histogram statistic และผลกระทบจากการใช้ Bind variable บนตารางนั้นๆ ไปแล้ว ถ้าใครมีคำถามสงสัยก็ลองถามเข้ามาได้ครับ แต่ในวันนี้ผมจะเล่าถึง Option นึงเกี่ยวกับการ Gather statistic ที่ส่วนใหญ่มักจะมองข้ามความสำคัญไป นั่นก็คือ METHOD_OPT ครับ โดยส่วนใหญ่มักจะถูกใช้เป็นค่า Default (เฮ้ยๆ ช่างมันเถอะ gather stats แล้วก็โอเคแล้วมั่ง) ซึ่ง Default ที่ผมพูดถึงนั่นก็คือ “FOR ALL COLUMNS SIZE AUTO” ครับ (ในบทความนี้ผมขอเรียกสั้นๆ ว่า AUTO นะครับ และ “FOR ALL COLUMNS SIZE SKEWONLY” ซึ่งเป็นพระเอกของเราในวันนี้ ผมขอเรียกสั้นๆ ว่า SKEWONLY ครับ)

Continue Reading

AUTO_SAMPLE_SIZE บน Oracle 11g ไฉไลกว่าเดิม!


เกริ่นนำกันก่อนละกันนะครับเกี่ยวกับการ Gather Optimizer Statistics ใน Oracle version เก่าๆ นั้น เราจำเป็นจะต้องคำนวน(เดา) ซึ่งเป็นเรื่องที่ค่อนข้างจุกจิกและยุ่งยากมากๆ เพราะ ถ้าเรากำหนดค่าไว้ที่ 100% บนออบเจ็กต์ขนาดใหญ่นั้นไม่ดีเอาซะเลย ถึงแม้ว่ามันจะการันตีว่าสถิติถูกรวบรวมมา 100% เต็มแต่ด้วยเวลาที่ใช้ไปนั้นเรียกได้ว่า “เต่าคลาน” เลยทีเดียว จนได้ถือกำเนิด AUTO_SAMPLE_SIZE ขึ้นเป็นครั้งแรกบน Oracle 9i ทำให้เราไม่จำเป็นต้องมาคอยกำหนด ESTIMATE_PERCENT อีกต่อไป แต่ข้อจำกัดของมันก็ยังมีอยู่ ถ้ามีการเบ้ (Skew) ของข้อมูลมากๆ สุดท้ายแล้วการกำหนด ESTIMATE_PERCENT ก็ยังคงมีประสิทธิภาพดีกว่าถ้ามีการเบ้ของข้อมูลมากๆ

Continue Reading