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

โฆษณา

Histogram statistics และผลกระทบจาก Bind variable


กรณีศึกษา: การรวบรวม Histogram statistics บนตารางและผลกระทบจากการใช้ Bind variables

สำหรับบทความในวันนี้ ผมจะพูดถึง Histogram statistics และผลกระทบของการใช้ Bind variables ต่อ Execution plan โดยผมจะกล่าวถึง บทความหนึ่งของท่านอาจารย์ของผมครับ

เมื่อเราทำการ Gather Statistics กับตารางที่ข้อมูลไม่ได้มีการปลี่ยนแปลงสามารถทำให้ Query Plan ที่เกิดกับคิวรีบนตารางเหล่านั้นเปลี่ยนไปได้ เช่นหากวันหนึ่งเราทำการ Gather Statistics รันคิวรี (และบันทึก Query Plan) เอาไว้ วันต่อมาเรา Gather Statistics อีก (และไม่ได้แก้ไขข้อมูลเดิมแต่อย่างใด) เมื่อเราคิวรีข้อมูลในตารางเหล่านั้นเราอาจจะพบว่า Query Plan ที่ได้ เปลี่ยนไป ซึ่ง Query Plan ที่ได้ ดูเหมือนวาจะดีกว่าตัวก่อน สาเหตุเป็นเพราะอะไร?

via Tanakorn Thai Oracle DBA: Query Plan เปี๊ยนไป๋!!?.

Continue Reading