เมื่อมีการใช้งาน Table ที่มีการทำ insert, update, delete บ่อย ๆ ก็จะเกิดบล็อคของข้อมูลที่เป็นพื้นที่ว่างเกิดขึ้น พื้นที่ว่างเหล่านี้เป็นที่ว่างที่ไม่ได้ถูกใช้งานทำให้เกิดการสิ้นเปลืองเนื้อที่ใน Tablespace โดยไม่จำเป็น นอกจากนี้ยังมีผลต่อประสิทธิภาพโดยรวมของระบบอีกด้วยเนื่องจากการที่มีจำนวนบล็อคที่ว่างกระจายอยู่ใน Segment มากมายทำให้การ query ข้อมูลทำได้ช้าเพราะต้อง scan ข้อมูลจากหลาย ๆ บล็อคเพื่อให้ได้ข้อมูลตามต้องการ
ใน Oracle 10g มีคำสั่งที่ใช้ในการลดพื้นที่ว่างเหล่านี้และจัดเรียงบล็อคข้อมูลใหม่เพื่อเพิ่มประสิทธิภาพโดยรวมของระบบ โดยมีรูปแบบคำสั่งดังนี้
alter table table_name shrink space
เนื่องจากการ shrink จะทำให้เกิดการเปลี่ยนแปลงตำแหน่งของ rowid ใน table ดังนั้นก่อนที่จะใช้คำสั่งนี้ได้ จะต้องทำการ enable row movement เสียก่อนด้วยคำสั่งดังนี้
alter table table_name enable row movement
ในทำนองเดียวกันถ้าเราต้องการลดพื้นที่ว่างสำหรับ database segment อื่น ๆ เช่น index ก็สามารถทำได้เช่นกัน ดังนี้
alter index index_name shrink space
ไม่มีความคิดเห็น:
แสดงความคิดเห็น