Category DB2

[DB] มาดูพวก Operator JOIN ทั้งหลายใน Execution Plan ดีกว่า

IBM DB2

หลังจากมี Blog เกี่ยวกับ Execution Plan ไป 2 ตอนแล้ว [DB2] ลองใช้ Execution Plan เพื่อดูว่า Query ที่เขียนนั้นแย่ หรือไม่ [DB2] แค่เปลี่ยน Query ชีวิตก็ดีขึ้นแล้ว JOIN vs Sub Query ถ้าลองสังเกตุดีๆ ตอนที่มันสร้าง Flow ขึ้นมา มันมีกล่องแทนการกระทำต่างๆ เช่น FETCH, TBSCAN เป็นต้น ซึ่งถ้าลองย้อนกลับไปในตอนเรียนวิชา Database มันมีหัวข้อนึง ชื่อ Query Optimization ทำอย่างไรให้ Relational…

[DB2] แค่เปลี่ยน Query ชีวิตก็ดีขึ้นแล้ว JOIN vs Sub Query

IBM DB2

วันนี้พอดีมาประจำการที่ Site และได้ดูเคสบ่นๆจาก User ว่าทำไมหน้า Exchange Rate มันช้าจังเลย เปิดทีรอ 2-3 นาทีได้ ตอนแรกเราก็เฉยๆอยู่ เพราะงานหลักของเรา คือ BOT DMS (DataSet กับ DataFile 2 พี่น้อง) แต่พอสักสายๆ เข้า BA บอกว่าเปิดไม่ได้เลย เค้าลอง Interface feed ข้อมูล ย้อนหลัง 10 ปี เข้าไป น่าจะประมาน 100,000 Record ได้ หลังจากผมเข้าไปดูที่เครื่อง BA สิ่งที่ผมเข้าใจได้…

[DB2] Stored Procedure ช่วยลบข้อมูลเยอะๆ

ในงานของเรา อาจจะมีการลบข้อมูลเยอะๆ ไม่ว่าใน DBMS ตัวไหนก็ตามครับ ถ้าเป็น DB2 ถ้าเราลบข้อมูลเยอะๆ อาจจะเจอปัญหา Transaction Log Full ได้ครับ ครั้นจะปิด Log แล้วลบทิ้ง ก็อาจจะมีปัญหาครับ เช่น ตัว HADR ถ้าปิด Log นี้ ไม่ Sync กันนะครับ ผมเลยมี Stored Procedure ที่ช่วยในการลบข้อมูล ดังนี้ครับ เห็น Code และมาดูก่อนว่า มันต้องใส่ Parameter อะไรบ้าง TABSCHEMA : ระบุชื่อ…

DB2 Launchpad มีแต่หน้าจอว่างๆ ไม่มีเมนู หรือปุ่มให้ลงโปรแกรม

สำหรับหลายๆคนที่ Install IBM DB2 เจอหน้าจอว่างๆแบบนี้ สาเหตุ: เกิดจาก Path ที่เก็บตัว Setup มี Space นะครับ เช่น “C:\TEMP IBM” การแก้ไข: เปลี่ยน Path ที่เก็บตัว Setup ไม่ให้มี Space นะครับ เช่น “C:\TEMP_IBM”

[DB2] Query ตรวจสอบการ Set Automatic Storage ของ Table Space

เมื่อวานได้ลองขึ้น DB สุดท้ายแล้ว พอทดสอบ Run App มันแจ้ง Error นี้ครับ SQL0289N Unable to allocate new pages in table space “USERSPACE1”. SQLSTATE=57011 สาเหตุ คือ DB2 มันจัดสรรพื้นที่ให้ไม่ได้ แต่การที่เราจะแก้อะไร ควรจะดู Config เก่าก่อน ได้มีการกำหนด Automatic Storage หรือ ยัง โดยเจ้า Automatic Storage เป็น Feature ที่ช่วยตรวจสอบพื้นที่ของ Table…

[DB2] ลองใช้ Execution Plan เพื่อดูว่า Query ที่เขียนนั้นแย่ หรือไม่

IBM DB2

บทความแรกของปี 2016 เลย (จริงๆ Plan ว่าจะเขียนนานแล้ว แต่ติดงานประจำที่ Change บ่อยมากๆ) วันนี้เลยไปเจอ Shell Script ของ AIX ตั้งนึง ที่ทำหน้าดึงข้อมูลมาใส่ใน Temp Table และส่งออกเป็น Text File ไประบบอื่นผ่าน FTP แต่ปัญหา คือ ว่ามันช้ามากกกกกกกกกกกกก รันเกือบ 20 นาทียังไม่ออกเลย จาก Query ตัวอย่าง เราจะพบว่า มัน Self Join เยอะมากก ซึ่งใน DBMS ถ้าตัวเจ๋งๆ…

[DB2] Set DB2CODEPAGE

CODEPAGE คือ อะไร ? CODEPAGE มองง่ายๆเลย คือ คำสั่งที่บอกให้เครื่องคอมพิวเตอร์รู้ว่า เรากำลังใช้ภาษาอะไรอยุ่กับมัน เช่น ภาษาไทย ภาษาอังกฤษ ซึ่ง Vender แต่ละค่ายได้แก่ Microsoft, SAP, ORACLE เป็นต้น ออกมาตรฐาน CODEPAGE ของตัวเองมา อย่างภาษาไทยมี CODEPAGE เช่น Windows-874,Tis-620,UTF-8 ทำไมภาษาไทย อันเดียวถึงมีหลากหลาย CODEPAGE ? เพราะ แต่ละเจ้าต้องการเป็นผู้นำ และก็เป็นเรื่องประสิทธิภาพด้วย เพราะ ถ้า Vender  พัฒนา CODEPAGE เอง ตัว Vender สามารถจะโมปรับแต่งให้เข้ากับระบบงานของตัวเองได้ง่ายด้วย…

[DB2] เปิดใช้งาน Hierarchical Queries

Hierarchical queries อันนี้จริงๆเป็น Feature ลับของทาง Oracle ครับ โดยนำมาช่วยให้สามารถ Query ข้อมูลยาก และซับซ้อนได้ง่ายขึ้นครับ เช่น มีข้อมูล Company อยากรู้ว่า Company รายการนี้ มีบริษัทลูกกี่ตัว เป็นต้นครับ (อันนี้เดี๋ยวของไปเขียน Blog ยกอีกตอนครับ หุหุ) สำหรับการเปิดใช้ Feature Hierarchical queries สามารถใช้คำสั่งง่ายๆ ดังนี้ db2set DB2_COMPATIBILITY_VECTOR=08 db2stop db2start ข้อควรระวัง: การเปิดใช้ Hierarchical queries นั้นช่วยให้สามารถ Query ข้อมูลแบบลำดับขั้นได้แล้ว…

[DB2] หา Table / Column ตาม SQL Error Message

พอดีเจอมาหลายครั้งแต่ แต่ก็ยังไม่ได้เขียนสักที ในระหว่างเราพัฒนาโปรแกรมเชื่อมต่อกับฐานข้อมูล DB2 บ่อยครั้งมักมี Error Message ของตัว SQL แล้วทีนี้ เราจะรู้ได้อย่างไรว่ามัน Error ที Table ไหน เพื่อทีจะได้หาสาเหตุได้อย่างรวดเร็วครับ โดยมีได้มี Error Message ดังนี้ ERROR [23502] [IBM][DB2/NT64] SQL0407N Assignment of a NULL value to a NOT NULL column “TBSPACEID=2, TABLEID=1111, COLNO=7” is not allowed.…