Group Blog
 
 
พฤษภาคม 2554
 
1234567
891011121314
15161718192021
22232425262728
293031 
 
21 พฤษภาคม 2554
 
All Blogs
 
QC1: Query Cache คืออะไร

MySQL มีหน่วยความจำกลางอยู่ส่วนหนึ่งที่ทำหน้าที่ cache ผลลัพธ์ของ Query เอาไว้
โดยมีลักษณะการทำงานดังนี้
1. เมื่อได้รับคำสั่ง query ก็จะตรวจสอบว่ามี query นี้ใน cache แล้วหรือยัง
1.1 หากยังไม่มี ก็จะเข้าสู่กระบวนการปรกติ ไปทำข้อ 2
1.2 แต่หากมีอยู่ใน cache แล้ว ก็จะคืนผลลัพธ์ใน cache กลับไปทันที และจบการทำงาน
2. ทำการ parse query -> optimize -> execute
3. เมื่อ execute แล้วแต่ละ storage engine ให้คำตอบกลับมา ก็จะนำผลลัพธ์ที่ได้ไปใส่ใน cache ควบคู่กับคำสั่ง query
4. คืนผลลัพธ์ให้กับผู้ใช้ แล้วจบการทำงาน

กระบวนการตรวจสอบว่ามีอยู่ใน cache หรือไม่
เป็นการตรวจสอบคำสั่ง query (SELECT) โดยต้องเหมือนกันทุกตัวอักษร
ต้องเว้นวรรค ตัวใหญ่เล็กแป๊ะ ๆ เท่านั้น

ทีนี้หลายคนอาจจะสงสัยว่า ข้อมูลใน cache จะถูกต้อง เป็นปัจจุบันหรือเปล่า
ข้อนี้ไม่ต้องกังวล มาดูกลไกในการจัดการข้อมูลใน cache ของ MySQL กันต่อ

สมมติ mysql ได้ cache คำสั่ง SELECT * FROM city WHERE id=1 ไว้
นอกจาก mysql จะเก็บคำสั่ง query และผลลัพธ์ไว้แล้ว ยังเก็บตารางที่เกี่ยวข้องไว้ด้วย
หากตารางที่เกี่ยวข้อง ในที่นี้คือ city มีการแก้ไข ไม่ว่าจะเป็น id อะไรก็ตามเช่น
UPDATE city SET name='Bangkok' WHERE id=2;
cache ทั้งหลายที่เกี่ยวข้องกับตาราง city นี้ จะถูกปลดออกจาก cache ทันที (ถูก invalidate)

จะเห็นได้ว่า กลไกการควบคุมความถูกต้องของข้อมูลใน cache เป็นลักษณะง่าย ๆ
ดังนั้น หากตาราง มีการเปลี่ยนแปลงข้อมูลบ่อย ๆ query cache ก็อาจะไม่มีประโยชน์มากนัก
แต่โดยทั่วไป จะทำให้ประสิทธิภาพสูงขึ้น 80-90% เลยทีเดียว

ฟังดูดีทีเดียว แต่ช้าก่อน โดยค่า default นั้น mysql ได้เปิด feature นี้ไว้
แต่ไม่ได้กำหนดขนาดของหน่วยความจำ cache นี้ไว้ (กำหนดไว้เป็น 0)
จึงทำให้ query cache นี้ใช้ไม่ได้!!!

ดังนั้น mysql server ทั้งหลายจึงไม่ได้รับประโยชน์จาก feature นี้เลย!!!

ตอนต่อไป มาดูวิธีการตั้งค่า query cache กันนะครับ




Create Date : 21 พฤษภาคม 2554
Last Update : 21 พฤษภาคม 2554 20:35:51 น. 1 comments
Counter : 1161 Pageviews.

 
isql (informix) ใช้ php ดึงได้มั้ย


โดย: bk123 วันที่: 21 พฤษภาคม 2554 เวลา:20:15:37 น.  

ชื่อ : * blog นี้ comment ได้เฉพาะสมาชิก
Comment :
  *ส่วน comment ไม่สามารถใช้ javascript และ style sheet
 

saknarak
Location :


[ดู Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 1 คน [?]




MCT, MCITP:SQLServer, MySQL DBA, DEV, CCSI
Friends' blogs
[Add saknarak's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.