เป็นการนำผลที่ได้จากการ Query
เก็บลงข้อมูล Cach จากนั้นเมื่อมีการ Query ด้วย Statement เดิม มันจะเข้าไปหาใน Cach ก่อน
หากพบข้อมูลมันจะดึงออกมาแสดงผลทันที ไม่ต้องไป Query จาก Table
มาใหม่ ทำให้ผลการค้นหานั้นเร็วขึ้นมาก โดยปกติ SQL Server จะมีการทำงานแบบนี้อยู่แล้ว แต่สำหรับ MySQL จะต้องทำการเปิดคุณสมบัติ
Query Cach เสียก่อนจึงจะสามารถใช้งานได้
ตัวอย่างการทำ Query Cach
การทำ Query Cach สำหรับ
MySQL นั้น มีวิธีดังนี
1. ตรวจสอบว่ามีการเปิดคุณสมบัติ Query Cach ไว้หรือไม่
1. ตรวจสอบว่ามีการเปิดคุณสมบัติ Query Cach ไว้หรือไม่
การที่จะใช้ Query
Cache ได้นั้น ตัวแปร have_query_cache ต้องเท่ากับ
‘YES’ ตัวแปร ‘query_cache_type’
เท่ากับ ‘ON’ นอกจากนี้ต้องคอนฟิกค่า query_cache_size
ด้วย เพื่อจองขนาด memory เพื่อใช้เก็บ query
cache ค่า 0 คือการปิดคุณสมบัติ query cache
2. ทดสอบ Query ปกติ ก่อนทำการเปิด Query Cach ได้ผลลัพธ์ดังนี้
พบว่าใช้เวลาประมาณ 0.21
วินาทีในการ Query
3. ทำการคอนฟิกค่า query_cache_size แก้ไขไฟล์ /etc/my.cnf โดยเพิ่มคอนฟิก query_cache_size ลงไป ให้อยู่ภายใต้คอนฟิกของ [mysqld] เช่นต้องการจอง memory ขนาด 32 Mbytes สำหรับทำเป็น cache ตัวอย่างคอนฟิกไฟล์จะเป็นดังนี้
หลังจากแก้ไขคอนฟิกไฟล์
/etc/my.cnf ให้รีสตาร์ต Service MySQL Server ใหม่
4. ทดสอบ Select ครั้งแรกหลังจากเปิด Query Cache
ยังคงใช้เวลา 0.23
วินาที เนื่องจากยังไม่มีการเก็บข้อมูลลงใน Cache
สามารถใช้คำสั่ง SHOW STATUS เพื่อดูสถิติการใช้ cache ของ MySQL
ค่าตัวแปร Qcache_not_cached
เพิ่มเป็น 1 คือการ SELECT ครั้งนี้ไม่ได้ดึงข้อมูลจาก
cache และค่า Qcache_inserts เป็น 1
คือเริ่มมีการใส่ผลลัพธ์เข้าไปใน cache
ทดลองรัน SELECT
อีกครั้งนึง โดยพิมพ์ statement ให้เหมือนเดิมทุกอย่าง
ทั้งตัวพิมพ์ใหญ่ พิมพ์เล็ก การเว้นวรรค ต้องเหมือนกันหมด ย้ำอีกที ต้องเหมือนกันหมด เพราะ MySQL ใช้ในการเปรียบเทียบกับ statement ที่เก็บไว้ใน cache
เวลาที่ใช้กลายเป็น
0.00 วินาที เพราะว่าผลลัพธ์จากการ SELECT ครั้งนี้
MySQL ไปดึงมาจาก cache แทน เราสามารถตรวจสอบว่าผลลัพธ์จากการ
SELECT มาจาก cache โดยดูค่า Qcache_hits
ที่เพิ่มขึ้น จากคำสั่ง SHOW STATUS
ไม่มีความคิดเห็น:
แสดงความคิดเห็น