ว่าด้วยเรื่องของ SELECT vs UPDATE ใน database

ไป 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% เลยทีเดียว โดยข้อมูลที่จัดเก็บมีไม่เยอะแค่หลักสิบล้านเอง ต่อไปน่าจะทำให้เหลือเฉพาะข้อมูลที่ใช้งานจริง ๆ

0
195