มีระบบอัลบั้มรูปอยู่ระบบหนึ่งซึ่งเป็นระบบเก่า ใช้ MySQL ชนิด MyISAM
ระบบนี้เป็นระบบที่มีการเก็บ stat ของการ view รูปภาพด้วยว่าแต่ละรูปมี stat การ view กี่ครั้ง
โดยตารางจะมีลักษณะคล้ายดังตารางด้านล่าง
Picture
ID description src album_id view_stat
1 xxxxxx /home/pic/1.jpg 7 55
2 yyyyyyy /home/pic/2.jpg 5 66
จากการตรวจสอบพบว่า คอขวดของปัญหาอยู่ที่การนับ stat ของรูป เนื่องจากว่า ตารางเป็น
MyISAM จึงเกิด table lock เมื่อ write stat ทุกครั้งที่มีการ view รูปภาพ เมื่อคนเข้าเยอะ view
ดูภาพเยอะ stat จึงถูกเขียนบ่อย ๆ read / write บ่อย ๆ และเกิด table lock บ่อย ๆ จนทำให้
database ล่ม กำหนดให้เก็บข้อมูลรูปภาพใน MyISAM อย่างเดิม เพราะมันประหยัด RAM
มากเมื่อเทียบกับ innoDB ท่านจะใช้วิธีการใดในการแก้ปัญหาของเว็บนี้ และแก้อย่างไร
โดยให้ stat สามารถแสดงได้อย่างถูกต้องและมี performance ดีขึ้น
ทำไมต้องเป็น Myisam
ระบบนี้เป็นระบบที่มีการเก็บ stat ของการ view รูปภาพด้วยว่าแต่ละรูปมี stat การ view กี่ครั้ง
โดยตารางจะมีลักษณะคล้ายดังตารางด้านล่าง
Picture
ID description src album_id view_stat
1 xxxxxx /home/pic/1.jpg 7 55
2 yyyyyyy /home/pic/2.jpg 5 66
จากการตรวจสอบพบว่า คอขวดของปัญหาอยู่ที่การนับ stat ของรูป เนื่องจากว่า ตารางเป็น
MyISAM จึงเกิด table lock เมื่อ write stat ทุกครั้งที่มีการ view รูปภาพ เมื่อคนเข้าเยอะ view
ดูภาพเยอะ stat จึงถูกเขียนบ่อย ๆ read / write บ่อย ๆ และเกิด table lock บ่อย ๆ จนทำให้
database ล่ม กำหนดให้เก็บข้อมูลรูปภาพใน MyISAM อย่างเดิม เพราะมันประหยัด RAM
มากเมื่อเทียบกับ innoDB ท่านจะใช้วิธีการใดในการแก้ปัญหาของเว็บนี้ และแก้อย่างไร
โดยให้ stat สามารถแสดงได้อย่างถูกต้องและมี performance ดีขึ้น