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


Cardinality Feedback

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

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

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

Continue Reading

Advertisements

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


mac-glasses

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

Continue Reading

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


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

Continue Reading

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


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

Continue Reading

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


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

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

Continue Reading

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


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

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

Continue Reading

Optimizer Hints อาวุธหนักในการ Tuning SQL


วันนี้เรามาทำความรู้จักกับ Optimizer hints กันครับ… เคยมั๊ยครับที่บางวันคิวรี่ก็ทำงานได้อย่างรวดเร็ว แต่บางวันก็ช้าเป็นเต่า? เคยมั๊ยครับที่เวลาคุณอัพเกรดระบบฐานข้อมูลจากเวอร์ชั่นเก่าเป็นเวอร์ชั่นใหม่แล้ว ทำไมคิวรี่มันถึงช้าลง? คุณเคยประสบปัญหาเหล่านี้หรือไม่ครับ? วันนี้ผมมีทางออกสำหรับปัญหาเหล่านี้ครับ นั่นก็คือพระเอกของเราวันนี้ “Optimizer Hints”

Continue Reading