ไป review ดูการทำงานของการเขียน SQL statement ใน Database
พบว่ามีสิ่งที่น่าสนใจ หรือ ปัญหานั่นเอง ประกอบไปด้วย
- ทำการ update เสมอ ไม่ว่าจะมีข้อมูลตามเงื่อนไขหรือไม่
- ทำการ query ข้อมูลบ่อยเกินไป
ส่งผลให้ database มีการทำงานมากผิดปกติ
คำถามคือ จะแก้ไขหรือลดการใช้งาน database อย่างไร ?
เริ่มจากปัญหาแรก คือการ update
เท่าที่ดูการทำงานมีการใส่เงื่อนไข และ join ข้อมูลข้ามหลาย table
ซึ่งจะทำงานเสมอทั้งมีข้อมูลและไม่มีข้อมูล
ตรงนี้เลยไปดูหน่อยว่า จะทำการปรับปรุงได้อย่างไร ?
ซึ่งก็ทำไปทำมาหลายวิธี
ทั้งการเพิ่มเงื่อนไขให้ถูกต้องตาม business condition ขึ้น
เพื่อลดเวลาของการการ update และจำนวน row ที่ถูก update
ก็ดีขึ้นมาก
แต่ก็ได้ลองดูอีกวิธีคือ
ถ้าไม่มีข้อมูลตามเงื่อนไขแล้ว จะไม่ทำการ update
เพราะว่าการ update ใช้ resource ที่สูงมาก ๆ
น่าจะดีกว่า
เพราะว่าจากข้อมูลที่เก็บพอว่า มีการ update มากกว่า 60-70% ที่ไม่มีข้อมูลตามเงื่อนไข
ดังนั้นจึงลองเพิ่มขึ้นตอนการตรวจสอบข้อมูลก่อน
ถ้าไม่มีก็จบการทำงาน
แต่ถ้ามีข้อมูลจึงทำการ update ตามที่เจอไป
ผลที่ตามมาคือ ลดการใช้งาน resource ของ database ลงไปประมาณ 20-30%
ซึ่งเป็นวิธีการที่ไม่คิดว่าจะทำให้ดีขึ้น
ปัญหาที่สอง คือ การ query ที่มากเกินไป
การแก้ไขไม่ยาก ก็แค่ลดจำนวน query ลงไป
แต่ผลกระทบที่มากคือ การเขียน code ที่ต้องเปลี่ยนไป
ก็ใช้เวลานานหน่อย
กับนำเรื่อง caching data มาช่วยเก็บข้อมูลที่ไม่ค่อยเปลี่ยนแปลงและใช้งานบ่อย ๆ
ก็ช่วยลดปัญหาไปได้เยอะ
จากการแก้ไขปัญหาทั้งสอง
สิ่งที่ได้รับกลับมาคือ สามารถลด resource ของ database ลงไปได้อีก 100% เลยทีเดียว
โดยข้อมูลที่จัดเก็บมีไม่เยอะแค่หลักสิบล้านเอง
ต่อไปน่าจะทำให้เหลือเฉพาะข้อมูลที่ใช้งานจริง ๆ