Monday, 23 July 2007

ความหมายของ Latch Contention ใน Oracle Database

คนที่ทำงานเป็น oracle dba มักจะเจอกับคำว่า latch contention, เรามาทำความเข้าใจกับคำนี้กันครับ

ในส่วนของ Latch Contention ทำความเข้าใจกับความหมายก่อน
Latch สำหรับ Oracle แล้วเป็นกลไกแบบ serialize
ที่ใช้ป้องกันพื้นที่ใน Shared Memory (SGA)
ตัวอย่างง่ายๆ ก็คือ Latch ทำหน้าที่ป้องกันไม่ให้ 2 processes ทำการ update ในพื้นที่ SGA เดียวกัน ซึ่งอาจจะทำให้เกิดการเสียหายได้

เนื่องจาก Latch เป็น Serialize เพราะงั้น มันจะรองรับได้ทีละ 1 process
เมื่อ process พบว่า latch ยังไม่ว่าง ก็จะทำการ request ใหม่เรื่อยๆ
กลไกการทำงานตรงส่วนนี้ จะเร็วมาก (คิดเป็นนาโนวินาทีได้เลย)
เพราะงั้นความถี่ของ latch request จะสูงมาก

Latch ที่มักจะกระทบ Performance คือ (พวกนี้อยู่ใน SGA นะ)

  • Library cache latches: protect
  • Redo copy/redo allocation latches
  • Shared pool latches
  • Cache buffers chain latches

การพิจารณา Latch Contention ก็จะพิจารณาจาก Miss Rate (Miss from latch request) หรือบาง Script อาจจะใช้วิธีพิจารณาจากเวลาที่ใช้ในการรอ Latch เป็นต้น

No comments: