ทำงานเกี่ยวกับ DB2 จริงๆจังๆซักพักใหญ่แล้ว เคยสงสัยไหมว่าเวลาทำ SQL Script เราจะเจอคำสั่งชุดนึงที่มักจะอยู่ในลำดับท้ายๆ ของไฟล์ SQL Script นั้น คือ
CALL SYSPROC.ADMIN_CMD( 'REORG TABLE xxxx' )
แล้ววันนี้เป็นโอกาสอันที่ ที่ผมมีเวลาว่าง เพราะเป็นวันหยุด 555 เดี๋ยวผมมาอธิบายกันว่าเจ้าคำสั่ง CALL SYSPROC.ADMIN_CMD( 'REORG TABLE xxxx' ) มันมันมีไว้ทำอะไรกัน ?
โดยเราจะมองที่ละส่วนกัน เผื่อคนที่ยังไม่รู้ครับ
ส่วนที่ 1: CALL SYSPROC.ADMIN_CMD คือ การเรียกใช้ Store procedure ของระบบ ซึ่งอยู่ใน Schema SYSPROC โดยเจ้า ADMIN_CMD คือ Procudure ที่เอาไว้รันคำสั่งในในระดับ administrative commands เพื่อจัดการกับ Database ของเราครับ โดยสิ่งที่เราสามารถจัดการได้ผ่านเจ้า ADMIN_CMD ได้แก่ RUNSTATS, PRUNE HISTORY/LOGFILE หรือ REORG INDEXES/TABLE เป็นต้นครับ ตัวอย่างการใช้งาน
CALL SYSPROC.ADMIN_CMD('คำสั่งทีต่องการ เช่น RUNSTATS')
ส่วนความสามารถอื่นๆ สามารถดูเพิ่มเติมได้ที่นี้ครับ ADMIN_CMD procedure - Run administrative commands
ส่วนที่ 2: 'REORG TABLE xxxx' คือ Command String หรือเป็นคำสั่งที่เราส่งให้ ADMIN_CMD ไปจัดการให้ โดยคำสั่งที่เราสนใจในตอนนี้ คือ 'REORG TABLE xxxx' ครับ
มากันที่คำสั่ง REORG มีหน้าที่โดยรวมคล้ายกับการ Defragment ใน Harddisk โดยมีการเคลียร์พื้นที่ว่างใน Page จัดการข้อมูล ถ้าเราเพิ่มคำสั่ง
- 'REORG INDEX xxxx' เป็นการ reorganize ข้อมูลสร้างเพื่อ Index ใหม่ รวมถึงการบีบอีกข้อมูลที่เป็น Dictionary ด้วย
- 'REORG TABLE xxxx' คือ การสร้างข้อมูลในแต่ละ row ลด fragment และบีบอัดข้อมูล เพื่อลดพื่นที่ในการจัดเก็บ
เมื่อไหร่เราถึงต้องใช้คำสั่งนี้หละ
- เมื่อมีการแก้ไขโครงสร้างของตาราง(DDL) เช่น เพื่ม Column, Drop Column หรือ Alter Column เป็นต้น
- เมื่อมีการแก้ไขข้อมูลในตาราง เช่น มีการ Insert หรือ Delete ข้อมูลทีละเยอะๆ เป็นต้น
- จะรู้ว่าต้อง reorg โดยใช้ Tool reorgchk
เวลาใช้งานจริงต้องเขียนอย่างไร ?
CALL SYSPROC.ADMIN_CMD( 'REORG TABLE WHTAX' );
แล้วเราจะรู้ได้อย่างไรว่า Table ของเรา ต้องมีการ REORG แล้ว
- Run โดยใช้ SQL Query
SELECT TABSCHEMA, TABNAME FROM SYSIBMADM.ADMINTABINFO WHERE REORG_PENDING = 'Y'
- Run โดยใช้ CLP Command
db2 reorgchk update statistics on table system
Reference
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.