Home > SQL Performance Tuning > การทำ Performance Tuning SQL Query เบื้องต้น (part 1)

การทำ Performance Tuning SQL Query เบื้องต้น (part 1)


จากใจผู้เขียน :

“จากบทความต่างๆ ที่ผมได้ post ลงไปใน blog นี้ ผมได้พบว่ามี blogger บางท่าน ได้นำข้อมูลต่างๆ จาก blog ผมไป post ต่อ โดย copy ไป และวางใน blog ของท่าน ผมอยากจะบอกว่าเนื้อหาทั้งหมดนั้น บางอย่างผมก็ได้ copy link เค้ามาเพื่อให้เกียรติหรือเครดิตกับเจ้าของเนื้อหา บางเรื่องผมได้เขียนจากประสบการณ์ทำงานทั้งหมด

ดังนั้นผมจึงอยากจะขอ ความกรุณา blogger ทุกท่าน ถ้า copy เนื้อหาของผมไป โดยเฉพาะส่วนที่ผมเขียนขึ้นมาเอง กรุณาให้เครดิตผมด้วยครับ เช่นวาง link ว่ามาจาก blog ของผมด้วยครับ อย่างน้อย ก็เป็นกำลังใจที่จะให้ผมเขียนบทความดีๆ ต่อไป”


ถ้าติดปัญหาเรื่อง Database ช้าหล่ะก็ บทความนี้คิดว่าคงพอจะช่วยให้หลายๆ ท่านที่กำลังประสบปัญหาอยู่ คงจะบรรเทาเบาบางลงได้บ้างนะครับ

จะไปแล้วการ tuning เนี่ยจะว่าง่ายก็ง่ายจะว่ายากก็ยาก แต่สุดท้ายก็อยู่ที่การสังเกตุและปรับปรุงระบบอยู่ตลอดเวลาน่ะแหล่ะครับ

หลักการที่ผมยึดเอาไว้เป็นแนวทางเสมอก็คือพยายาม tuning ระบบให้ใช้เงินน้อยที่สุดแต่เกิดผลลัพธ์มากที่สุด และที่สำคัญ เสร็จเร็วตามกำหนดครับ (ในชีวิตจริงๆ อาจจะทำได้บ้างไม่ได้บ้าง ก็แล้วแต่ Permission และ Policy ของแต่ละบริษัทแหล่ะครับ)

แนวทางการ Tuning

การ tuning database นั้นแบ่งแนวทางการ  tune เป็น 2 แนวทางใหญ่ๆ คือ

1.Hardware

2.Software

Hardware Tuning

การ tuning ทาง hardware นั้นมีข้อดีคือง่าย และก็ไม่ยุ่งยาก แต่ข้อเสียนั้นก็คือใช้เงินเยอะกว่าแบบ software ไงครับ ยกตัวอย่างเช่น เปลี่ยน CPU, เพิ่ม RAM เป็นต้น ซึ่งในทางปฏิบัติอาจจะขอเงินเจ้านายยากหน่อย เพราะว่าเดี๋ยวนี้ อะไรก็ต้องประหยัดกันทั้งนั้น จริงไหมครับ

แต่เคยไหมครับ พอระบบเรามีปัญหาปั้บ บางท่านอาจจะเคยขอซื้อ RAM เพิ่ม แต่พอซื้อมาแล้ว ใส่ลงไปใน server แล้ว ปรากฎว่าช้าเหมือนเดิม (ฮา)

ประเด็นหลักจะอยู่ที่เราจะต้องหาคอขวด (Bottle Neck) ให้ได้ก่อน ว่าระบบของเราช้าที่ตรงไหน (วิธีการหาผมจะอธิบายในบทความต่อไปครับ) หลังจากนั้นเราถึงจะแก้ไขปัญหาได้ตรงจุดจริงๆ ครับ เหมือนกับเราไปหาหมอ ก่อนที่หมอจะจ่ายยา หมอจะต้องแน่ใจว่าเราเป็นโรคอะไรก่อน ถึงจะจ่ายยาให้หรือรักษาเราได้ตรงจุดครับ ไม่เช่นนั้น ก็มีแต่ได้ลองทานยาไปเรื่อยๆ แน่นอน

จริงๆ แล้วผมชอบวิธีการ tuning ด้วย hardware นะครับ เพราะว่าทำได้ง่ายและรวดเร็ว และที่แน่ๆ database เร็วขึ้นชัวร์ๆ โดยที่ไม่ไปแก้ logic ใดๆ ของระบบเลย แต่ส่วนใหญ่ลูกค้าผมมักไม่ค่อยจะชอบเท่าไหร่ เพราะว่าต้องจ่ายเงินซื้อ hardware เพื่อ upgrade ในราคาที่สูงพอดูทีเดียวเชียวครับ ก็เลยไม่ค่อย happy กัน

Software Tuning

ส่วนใหญ่เวลาที่ผมเข้าไป tuning ระบบให้กับลูกค้าในบริษัทต่างๆ มักจะเจอคำถามบ่อยๆ ว่า “อยากจะดู Query Syntax ไหมครับ ว่าทางพวกผมเขียนดีหรือเปล่า” ก็แปลว่าคนส่วนใหญ่มักจะชอบหาวิธีที่จะทำยังไงให้ เขียน Query ที่รันได้เร็วมั้งครับ จริงๆ แล้วก็ถูกส่วนนึงครับ แต่ยังไม่ถูกทั้งหมด เพราะว่าในจุดที่เราจะทำ tuning software นันมีอีกหลายจุดครับ เช่น DB Engine, ODBC Driver, Client Application, Protocal, DB Configuration เป็นต้นครับ

ตามหลักการแล้ว ผมจะพยายามแก้ปัญหาในจุดที่คิดว่าทำได้ง่ายที่สุดก่อน ในความคิดผม Query Syntax เป็นจุดที่ยากที่สุดจุดนึงเลยครับ เพราะว่า query ตัวไหนที่เขียนไปแล้ว รันไปได้แล้ว ไม่มีปัญหา พยายามอย่าแก้เด็ดขาด ถ้าไม่จำเป็น รับรองว่าสยองมากๆ

แนวทางที่ผมจะเสนอก็คือการที่จะทำยังไงก็ได้ โดยไม่ไปยุ่งกับระบบเดิมหรือเข้าไปแก้ไข logic เดิมให้น้อยที่สุด หรือพูดอีกนัยหนึ่งก็คือ อย่าไปยุ่งกับ Query โดยเด็ดขาดถ้าไม่จำเป็นครับ

เตรียมตัวกันก่อน

ก่อนจะเจอกันในตอนต่อไป ผมอยากจะให้ทุกท่านเตรียม software ที่จะใช้ทดลองตามกัน ดังต่อไปนี้

1. Microsoft SQL Server 2008 Evaluation Edition โดยสามารถเข้าไป download ได้ตาม link http://technet.microsoft.com/en-us/evalcenter/bb851664.aspx

2. ติดตั้ง ฐานข้อมูลตัวอย่าง AdventureWorks จากแผ่น DVD ของ SQL โดยเลือกติดตั้ง sample database เพิ่มเติมเข้าไปด้วย

หลักสูตรอบรม Tuning SQL Server (Click)

  1. Kanogtip
    March 4, 2010 at 15:16

    ขอบคุณสำหรับความรู้ค๊า ท่านอาจารย์ 😀

  2. May 11, 2015 at 08:30

    ขอบคุณครับอาจารย์

  1. No trackbacks yet.

Leave a comment