Tuesday, 27 November 2007

[ถามต้อม#3] Hit rate ของ database นี่มันคืออะไร? มีผลอะไรกับ database บ้าง?

ถามโดย คุณ Anonymous
รบกวนสอบถามค่ะ คือสงสัยว่า hit rate ของ database นี่มันคืออะไรเหรอคะมีผลอะไรกับ DB บ้างรบกวนท่านผู้รู้หน่อยค่ะ

ตอบ
โดยหลักการทำงานของ Oracle Database นั้น จะมีส่วนที่เรียกว่า Database Buffer Cache โดยส่วนนี้จะทำหน้าที่ Cache เหล่า Data Block ที่ถูก Query ไว้ ซึ่งทุกครั้งที่มีการ Query ข้อมูลต่าง ๆ Oracle ก็จะทำการค้นหาที่ Buffer Cache ก่อน และแสดงผลทันทีเมื่อพบ Data Block ที่ต้องการ (cache hit) ทำให้การค้นหาข้อมูลเร็วขึ้น และช่วยลดการอ่าน Disk โดยตรงอีกด้วย

อย่างไรก็ดี ถ้า Query แล้วไม่เจอ Data Block ที่ต้องการใน Buffer Cache (cache miss) ตัว Oracle ก็จะทำการค้นหาใน Disk แล้ว Copy Data Block ดังกล่าวมาเก็บไว้ที่ Cache ทีนี้จะเก็บได้มากน้อยแค่ไหน ก็ขึ้นกับขนาดของ Cache ที่กำหนด ถ้า Cache เต็ม Oracle ก็จะทำการ move block ที่มีการใช้งานน้อยที่สุด ออกไปก่อน (LRU)

อย่างไรก็ดี Cache ที่มีขนาดใหญ่ไม่ได้ช่วยให้ Performance ของ Database ดีขึ้นเสมอไป การกำหนดขนาดของ Cache ให้เหมาะสมจะช่วยเพิ่ม Performance ของ Database ได้ โดยอาศัยการ monitor ค่า Hit Rate หรือที่ Oracle เรียกว่า Buffer Cache Hit Ratio ซึ่งเป็นการหาอัตราส่วนของ ความถี่ที่ cache hit ต่อด้วยจำนวน total request

ถ้าค่า Buffer Cache Hit Ratio มีค่ามาก แสดงถึงว่ามีการเข้าถึงข้อมูลผ่านทาง Buffer Cache มากกว่าการ read จาก disk โดยตรง อย่างไรก็ดี การ tuning database นั้น ขึ้นกับองค์ประกอบหลายส่วน การ tuning โดยไม่คำนึงถึงส่วนประกอบอื่นๆ อาจส่งผลให้ Performance ของ Database แย่ลงได้ค่ะ

(ถามต้อมคืออะไร?)

1 comment:

~inSiderboy said...

ช่วงนี้ดูเงียบ ๆกันหรือเปล่าครับ.มีProject เข้ามาแต่ต้นปีมั่งเนี้ย..กรี๊ดอยากอ่านอีกT_T