เรื่องของ db2 AUTO_RUNSTATS

พอมีเคสว่า hadr ของ db2 มันแตก take ไป dr แล้วเจอปัญหา sql1477n ในหลาย table เลยตกลงว่าใช้ fallback plan ถอยกลับมาที่ dc แต่เจออภินิหารต่อ Table ที่มันพังที่ dr มัน trigger RUNSTATS ทั้งคืนเลยครับ CPU/MEM พุ่งงง ตอนนั้นเลยเสนอ ลองปิดมันดู (แต่ต้องถาม Consult ก่อนนะ ผมเป็น dev นี่)

db2 UPDATE DB CFG FOR ฺ[YOUR-DB-NAME] USING AUTO_RUNSTATS OFF

สรุปอาการ CPU/MEM พุ่งงง กลับมาปกติครับ

แล้วที่นี่มา Recap AUTO_RUNSTATS

จดไว้ เผื่อพังจะได้มี record ว่าลองแล้ว สำหรับ Property AUTO_RUNSTATS เป็น Flag แบบ Online (แก้ได้ โดยไม่ต้อง down database เลย โดยจุดประสงค์ของเจ้า AUTO_RUNSTATS ตามชื่อเลยครับ มันทำหน้าที่ปรับค่า weight เพื่อให้ Query Execution Plan มันทำงานได้ดีขึ้นครับ โดยค่า threshold ของ data change เปลี่ยนแปลง 15-20 % แล้วแต่ค่ายนะ อย่างของ MSSQL Server ผมไปฟัง แล้วจดไว้ในส่วน index statistics

ซึ่งเจ้า AUTO_RUNSTATS มันมาเป็น Set ใหญ่ มันมากับ Feature Automate Maintenance (AUTO_MAINT) ปกติ DB2 10 มันจะเปิด Default และตัว AUTO_RUNSTATS จะตามมาด้วย โดย auto_maint มีความสัมพันธ์ ดังนี้

Automatic Maintenance (AUTO_MAINT)
--> Automatic Database Backup (AUTO_DB_BACKUP)
--> Automatic Table Maintenance (AUTO_TBL_MAINT)
    |--> Automatic Runstats (AUTO_RUNSTATS) << เปิดตรงนี้ เดี่ยวที่เหลือ DB2 จะการเอง
    |    |--> Real-Time Statistics (AUTO_STMT_STATS)
    |    |--> Statistical Views (AUTO_STATS_VIEWS)
    |    |--> Automatic Sampling (AUTO_SAMPLING) เอามาตั้งเป็น threshold ของ AUTO_RUNSTATS ขึ้นกับขนาด Table
    |--> Automatic Reorganization (AUTO_REORG)

สำหรับบางระบบอันนี้คุยพวก SI มานะเหมือนจะมีค่า registry ที่ใช้ db2set อย่างตัวแปร DB2_WORKLOAD ก็จะได้ Set การตั้งค่าเบื้องต้นมาในส่วน AUTO_MAINT อย่างพวก SAP จะมีให้กำหนดเพิ่ม

จริงมันควรจะ auto ไหม ?

ถ้ามี job ในการ ReOrg / RunStat อยู่แล้ว อย่าง DB ที่ดูแลตั้งไว้ทุกคืนเลย และปิด AUTO_RUNSTATS ไป เพราะกลัวว่าเดวช่วง Process สิ้นวัน มันจะไปเข้าเงื่อนไข แล้ว Run Stat มันทำงาน แล้วงาน Batch ที่รอจะช้าไปด้วยครับ

ถ้าจะเปิดกลับ (อย่าลืม Connect DB ก่อนนะ)

db2 UPDATE DB CFG FOR ฺ[YOUR-DB-NAME] USING AUTO_RUNSTATS ON

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.