ทำให้ความเร็วการค้นหาเร็วขึ้น 10 เท่าด้วยวิศวกรรมที่เหมาะสม
(engineering.ab180.co)นี่คือตัวอย่างการปรับปรุงบริการค้นหาด้วยวิศวกรรมที่พอดีและเหมาะกับสถานการณ์
การตระหนักถึงปัญหา
- บริการค้นหาที่ช้าลง
- รับรู้ปัญหาความซับซ้อนจากการใช้ Join และ Regular Expression เพื่อการค้นหา
กลยุทธ์การแก้ปัญหา
- เคยพิจารณา Elasticsearch ในช่วงแรก
- มีประเด็นด้านต้นทุนเพราะต้องจัดการทั้งความเป็นเรียลไทม์ร่วมกับ Main DB และข้อมูลจำนวนมากที่ต้องเก็บถาวร
- สร้างตารางเฉพาะสำหรับการค้นหาที่เรียบง่ายขึ้นและออกแบบ search query
- ใช้ MySQL Trigger เพื่อโหลดข้อมูล
ผลลัพธ์
- ปรับปรุง query ที่เคยใช้เวลา 3 นาที ให้เหลือ 2 วินาที
- ส่งมอบคุณค่าให้ลูกค้าได้รวดเร็วด้วยวิศวกรรมที่ไม่เกินความจำเป็น
2 ความคิดเห็น
ดูเหมือนว่าจะนำวิธีแยกตารางหลายตารางสำหรับข้อมูลชุดเดียวกันตามวัตถุประสงค์การใช้งานมาใช้ ซึ่งมักใช้ตอนสร้างเว็บไซต์ขนาดใหญ่ที่มีปริมาณการเข้าถึงสูง
บางครั้งก็แยกเป็นสำหรับลูกค้าและสำหรับผู้ดูแลระบบแบบนี้ แต่กรณีนี้เป็นตัวอย่างที่นำไปใช้กับงานค้นหาได้อย่างเหมาะสมครับ
ผมไม่ค่อยรู้เรื่องสาย DB เท่าไร เลยรู้สึกว่าบทความข้อมูลแบบนี้ทั้งน่าทึ่งและสนุกดีครับ