Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

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

$
0
0

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


Viewing all articles
Browse latest Browse all 1997

Trending Articles