-->

วันเสาร์ที่ 25 กุมภาพันธ์ พ.ศ. 2555

Performance Tuning


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

ทำไมต้องมีการทำ Performance Tuning

โดยส่วนใหญ่แล้วจะมีอยู่ 3 กรณี ได้แก่
o   เมื่อต้องการให้ระบบมีความเร็วในการ Access ข้อมูลภายใน Database เพิ่มขึ้น
o   เมื่อต้องการให้ระบบสามารถรับ Load ของ Request ที่เข้ามาได้มากขึ้น ตลอดจนถึง Connection ด้วย
o   เมื่อต้องการให้ระบบมีความเสถียรภาพที่ดีขึ้น ไม่ Hang กรณีเจอ Peak load

สาเหตุที่เกิดปัญหา

o   Design Database ไม่ดี หรือดีเกินไป
      ในการออกแบบฐานข้อมูล จะมีการ Normalize Table แตกตารางเป็นหลายตาราง ให้มีความซ้ำซ้อนน้อยที่สุด เพื่อให้สะดวกต่อการ Insert, Update, Delete แต่เมื่อเราต้องการดึงข้อมูล (Select) จากตารางต่าง ๆ ขึ้นมาใช้ ทำให้ต้อง Join, Subquery หรือแม้กระทั่ง Union จากหลายตารางมากเกินไป เพื่อให้ได้ผลลัพท์ที่ต้องการ ซึ่งทำให้ช้าเกินกว่าที่รับได้ ถ้าข้อมูลมีจำนวน Record มากขึ้นเกินระดับหนึ่ง
o   Application Tuning
      สาเหตุอันดับหนึ่งของความช้า เนื่องมากจากการเขียน SQL ไม่ถูกต้อง ทำให้เกิดการ Full Table Scan (ไล่ดูข้อมูลทั้งตารางทีละ Record ตั้งแต่ 1 ไปถึง 100), การจัดเรียงข้อมูล (Sorting) เพื่อ Matching หรือแสดงผลทุกครั้งที่ Query, Join หลาย Table เกินไป, ดึงข้อมูลมากเกินกว่าที่จะแสดงผลให้ User ดูได้ในคราวเดียว, Caching, การใช้ Like, การใช้ OR, Union, Order by, Distinct, Group by, Implicit Cast ที่ไม่เหมาะสม, ไม่ใช้ Bind Variable
o   Memory Tuning
      ระบบจัดการฐานข้อมูล (Database Management System : DBMS) ต้องการหน่วยความจำ (Memory) ที่เพียงพอ เพื่อใช้งานการทำงานต่าง ๆ เช่น shared_pool, buffer cache, log buffer ตัวอย่างเช่นเราสามารถดูอัตรา Buffer Hit Ratio ถ้าค่ายิ่งมากยิ่งเร็ว แสดงว่าข้อมูลที่เราต้องการถูก Load อยู่บน Memory แล้วไม่ต้องไปหาจากใน Harddisk ใหม่ แต่ถ้าค่าน้อยแสดงว่า Memory น้อยเกินไป หรือมีปัญหาเรื่องการ Design อื่น ๆ ทำให้ DBMS ไม่สามารถใช้ข้อมูลที่อยู่บน Memory ได้ต้องไปดึงจาก Harddisk มาใหม่
o   I/O Tuning
     ระบบฐานข้อมูลไม่สามารถทำงานได้เร็ว ถ้าข้อมูลอยู่บน Disk ที่ช้า หรือ Network ที่ช้า และควรมีการบริหารจัดการ Data File, Log File, Temp File และ Block Size ที่เหมาะสม
o   Eliminate Database Contention:
     ใช้ Tools ตรวจหา Lock, Latch และ Wait ภายใน Database และกำหนด Schedule Batch Job ให้ไม่กระทบกับงานขณะ Peak Working Hours.
o   OS Tuning
      ตรวจสอบ และ Tune OS, CPU, I/O, Memory Utilization โดยประสานงานกับผู้ดูแลระบบ และศึกษาเกี่ยวกับ OS Platform ที่ใช้อยู่ เช่น Windows, Linux, Unix, Solaris

ประโยชน์จากการทำ Performance Tuning ทำให้มีการเรียกใช้ทรัพยากรของระบบได้สูงสุดและมีประสิทธิภาพมากยิ่งขึ้น

                สามารถเข้าถึงข้อมูลได้อย่างรวดเร็วมากยิ่งขึ้น
                หากมีการ tuning ที่ดีแล้ว อาจไม่จำเป็นที่จะต้องปรับเปลี่ยน Hardware ภายนอกเลย ทำให้ลดต้นทุนค่าใช้จ่ายได้อีกด้วย
 

    แนวทางการปรับแต่ง

                การ tuning database นั้นมี 2 แนวทางใหญ่ๆเลยคือ

    Hardware Tuning

การปรับแต่งทางด้านอุปกรณ์ Hardware ของระบบ เช่น การเปลี่ยน CPU หรือ RAM เป็นต้น เป็นวิธีที่ง่ายที่สุดและเป็นวิธีที่ต้องเสียเงินเยอะกว่าวิธีอื่นเช่นกัน ถ้าหากมีการออกแบบระบบฐานข้อมูลมาไม่ดี การปรับเปลี่ยน Hardware ใหม่นอกจากจะสิ้นเปลืองค่าใช้จ่ายแล้วอาจไม่สามารถช่วยอะไรเลยได้เช่นกัน

    Software Tuning

คือการปรับแต่งภายในระบบเซิฟเวอร์ที่มีการติดตั้งฐานข้อมูลนั้นๆไว้ ทั้งการปรับแต่งค่าพารามิเตอร์ต่างๆของตัวฐานข้อมูลและการปรับแต่งโค้ดภายในอีกมากมาย ใช้ระยะเวลาในการดำเนินการค่อนข้างนาน แต่ทำให้ไม่ต้องสูญเสียค่าใช้จ่ายโดยไม่จำเป็น เป็นการลดต้นทุนในระดับหนึ่ง โดยรายงานฉบับนี้จะเน้นไปทางด้าน Software Tuning เท่านั้น


http://www.mediafire.com/?5viq1mk0cczzzfu <-- PPT 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น