Sunday, August 30, 2009

การตรวจสอบ Performance โดยใช้ Enterprise Manager

ใน Oracle ก่อนเวอร์ชั่น 9 การตรวจสอบ Performance แต่ละตัวเป็นเรื่องค่อนข้างยุ่งยาก และมักจะต้องทำใน text mode แต่ในปัจจุบันนี้ Oracle ได้พัฒนา Tools ที่ใช้ในการบริหารฐานข้อมูล เพื่อให้การบริหารฐานข้อมูลทำได้ง่ายขึ้นและใช้เวลาในการเรียนรู้น้อยลง Oracle Enterprise Manager ตัวที่นำมาให้ดูเป็นตัวอย่างนี้เป็นตัวที่มากับ Oracle10g Database ซึ่งสามารถใช้งานได้เลยถ้ามีการกำหนดให้ลงไว้เมื่อตอนสร้างฐานข้อมูล ผู้ใช้สามารถเข้า Enterprise Manager โดยพิมพ์ URL บน Web Browser เช่น http://hostname:5500/em หรือ http://hostname:1158/em แล้วแต่ว่า Port ถูกตั้งค่าเป็นอะไร ผมจะไม่เขียนถึงรายละเอียดตรงนี้นะครับ เมื่อเข้าสู่หน้าจอหลักของ Oracle Enterprise Mananger แล้ว คลิ๊กแท็ป Performance เลยครับ

Sessions: Waiting and Working เป็น Chart ที่สำคัญที่สุดอันหนึ่ง แสดงแผนภูมิของสภาวะการทำงานของระบบฐานข้อมูล ณ ช่วงเวลาหนึ่งจนถึงปัจจุบัน โดยกราฟจะแสดงจำนวน Session ที่กำลังใช้ CPU และกี่ Session ที่กำลังใช้งาน I/O, Redo Writes หรือกำลังทำงานผ่านระบบเน็ทเวอร์ค หรือการรอคอยประเภทอื่น ๆ

ในสภาวะที่เหมาะสม ทุก ๆ Sessions ควรจะทำงานบน CPU (เป็นพื้นที่สี่เขียวในแผนภูมิ) และไม่มีการรอคอย (Wait) ซึ่งเป็นพื้นที่สีอื่นที่นอกเหนือจาำกสีเขียวของ CPU) ถ้าปริมาณของสีอื่น ๆ มีมากกว่าสีเขียวในอัตราส่วนสูง แสดงว่ามีการรอคอยในระบบจำนวนมาก (สังเกตสีของชนิดของการรอคอยเพื่อจะได้รู้ว่าเป็นการรอคอยประเภทใด) เราสามารถคลิ๊กบน Legend เพื่อดูรายละเอียดของการรอคอยแต่ละประเภท อย่างไรก็ตามบางครั้งการรอคอยก็เป็นสิ่งที่หลีกเลี่ยงได้ยาก เช่นตอนที่เราโหลดข้อมูลจำนวนมากจาก Disk เข้าสู่ Database Buffer เป็นต้น



Hosts: Average Run Queue Length แสดงถึงการที่ Process มากกว่าหนึ่งตัว กำลังพยายามแย่งใช้ CPU กันอยู่ โดย Run Queue Length แสดงถึง Process ที่พร้อมจะใช้ CPU แต่ไม่สามารถจะใช้ได้ เพราะมี Process อื่นใช้อยู่ ตัวอยางเช่น เมื่อมี User ที่ได้ Lock ต้องการใช้ CPU แต่ไม่สามารถใช้งานได้ ในขณะที่มี User คนอื่นต้องการจะ Lock ตารางนั้นบ้าง User คนหลังจะต้องคอยจนกว่า คนแรกจะได้ใช้ CPU และปล่อย Lock อย่างไรก็ตามในบางครั้งเราอาจจะเห็นว่ามีการใช้งาน CPU ถึง 100% แต่ Response Time อาจจะดีก็ได้ เนื่องจากไม่มี Process ใด ๆ รอคอย CPU อยู่เลย

Hosts: Paging Rate แสดงอัตราที่ CPU เขียน Page of Memory ไว้บน Disk เนื่องจาก RAM ไม่พอซึ่งก่อให้เกิดผลเสียกับประสิทธิภาพของระบบอย่างมาก และถ้ามี Process ใด ๆ ที่รันอยู่ต้องการข้อมูลของ Page ที่ถูกเขียนไปไว้บน Disk ก็จะต้องรอให้ I/O ทำงานให้ ซึ่งเป็นการทำงานที่ช้ามากเมื่อเทียบกับการทำงานบน RAM ล้วน ๆ ดังนั้นระบบควรจะมี RAM อย่างเพียงพอในการทำงาน ซึ่งจะทำให้ระบบไม่ต้องทำการ Paging เลย



Instance Throughput เนื่องจาก Sessions Chart บอกเพียงว่ามีการใช้งาน CPU และการรอคอยเท่าใด แต่ไม่ได้บอกว่าการใช้งานเหล่านั้นสมเหตุสมผลเพียงใด แผนภูมินี้จะแสดงน้ำหนักของการใช้ข้อมูลบน Sessions Chart เช่นถ้าจำนวน Session ใน Sessions Chart พุ่งขึ้นสูง แต่ตัวเลขใน Throughput นี้ก็สูงขึ้นด้วย ก็อาจจะยอมรับได้ว่ามีคนเข้ามาใช้ระบบเป็นจำนวนมาก จึงทำให้ระบบทำงานมาก ซึ่งก็ถือว่าระบบไม่ได้ช้าผิดปกติแต่อย่างใด แต่อาจจะต้องพิจารณาในแง่อื่น เช่นเมื่อมี User เข้ามาใช้ระบบมากขึ้น ก็อาจจะต้องทำการปรับปรุงขนาดของฮาร์ดแวร์เป็นต้น อย่างไรก็ตามถ้า Throughput ลดต่ำลง แต่ Sessions Chart แสดงการแย่งใช้งานสูง อย่างนี้แสดงว่าอาจจะต้องทำการจูนระบบแล้ว



ในส่วนของ Active Session คลิ๊กที่ หัวข้อบน Legend ที่ต้องการดูรายละเอียดจะเข้าสู่หน้า Active Session Waiting ให้คลิ๊กที่ "User I/O"

Active Sessions Waiting: User I/O แผนภูมินี้แสดงการรอการทำงานของดิสก์ (User I/O) โดยแสดงการรอใช้งานดิสก์ของ Session ต่าง ๆ ณ ช่วงเวลาหนึ่ง ๆ เราสามารถเลือกช่วงเวลา (ห้านาที) ที่ต้องการดูรายละเอียดได้โดยคลิ๊กที่แถบด้านล่างใต้แกน X ของแผนภูมิ เมื่อคลิ๊กแล้วจะปรากฎรายละเอียดที่ด้านล่างของแผนภูมิ

Legend แสดงการรอคอยประเภทต่าง แสดงไว้เป็นสีเพื่อให้สามารถแยกความแตกต่างบนแผนภูมิได้

บริเวณด้านล่างที่แสดงรายละเอียด (Detail for Selected 5 Minute Interval) ประกอบด้วย 5 แท็ปคือ
- Overview - แสดงภาพรวมของรายละเอียด
- Top SQL – เพื่อดู SQL statement ที่ทำให้เกิดการรอคอยยาวนานที่สุด
- Top Session – เพื่อดู session ที่รอคอยยาวนานที่สุด
- Top Files – เพื่อดูไฟล์ที่มีการรอคอยใช้งานนานที่สุด
- Top Objects – แสดง object (ตาราง) ที่มีการรอใช้งานนานที่สุด

ข้อมูลที่แสดงบนแท็ปต่าง ๆ มีดังนี้
1) แท็ป Overview แสดง Top Waiting SQL (แท็ป Top SQL) และ Top Waiting Sessions (แท็ป Top Sessions)
- Top Waiting SQL แสดงคำสั่ง SQL ที่มีการรอคอยนานที่สุด คลิ๊กที่รายการที่มีค่า % มากที่สุด (ยกเว้น Other) เพื่อดูคำสั่ง และ execution plan
- Top Waiting Session แสดง session ที่มีการรอคอยสูงสุด คลิ๊กที่รายการที่มีค่า % มากที่สุด (ยกเว้น Other) เพื่อดูรายละเอียดของ session เช่น โปรแกรมที่ใช้, เวลาล็อกอิน, ประเภทของการเชื่อมต่อเป็นต้น



2) แท็ป Top SQL แสดง Top Waiting SQL และสามารถแสดงรายละเอียดของ SQL ได้ด้วยโดยการคลิ๊กที่ Legend ของคำสั่งที่มีเวลารอคอยสูงสุด (แต่ละบรรทัดของ Legend หมายถึงแต่ละคำสั่ง SQL คำสั่งที่มีการรอคอยสูงสุดจะปรากฎเป็นพื้นที่ขนาดใหญ่ที่สุดบน Pie Chart) เมื่อเราคลิ๊กที่ บรรทัดใด ๆ บน Legend เราจะสามารถดูคำสั่ง SQL และ Execution Plan ของมันได้
บริเวณทางขวามือของแท็ปนี้จะแสดงรายละเอียดของคำสั่งที่แสดงในแผนภูมิทางด้านซ้ายเพื่อให้รู้ว่าคำสั่งที่ช้านั้น ๆ ใช้เวลาไปกับอะไรเป็นส่วนใหญ่ เราสามารถคลิ๊กที่รายการในคอลัมน์ Wait Event เพื่อดูจำนวนของการรอคอยที่ระดับช่วงระยะเวลาต่าง ๆ



3) แท็ป Top Sessions ถ้ากล่าวโดยให้เห็นภาพง่าย ๆ Sessions ก็คือการเชื่อมต่อเข้าสู่ฐานข้อมูลของ Users นั่นเอง ในแท็ปนี้เราสามารถเห็นว่ามี Sessions ใดที่มีการรอคอยนานที่สุด รวมทั้งจำนวน Sessions อยู่ทางด้านซ้าย และประเภทของการรอคอยอยู่ทางด้านขวา รวมทั้งโปรแกรมและ Username ที่ใช้ในการเชื่อมต่อกับฐานข้อมูลของ Session นั้น ๆ ด้วย



4) แท็ป Top Files แสดงไฟล์ที่มีการใช้งานสูง ไฟล์ที่มีการใช้งานสูงก็จะทำให้เกิดการรอคอยในการเข้าถึงข้อมูลในไฟล์ ซึ่งการแก้ไขอาจจะต้องทำการย้ายวัตถุที่มีการใช้งานสูง ๆ เช่นตารางบางตารางออกจากไฟล์นั้น ๆ
บริเวณทางด้านซ้ายจะแสดงไฟล์ต่าง ๆ ที่มีการรอคอยสูงเปรียบเทียบกันในแผนภูมิ Pie Chart ส่วนทางด้านขวาจะแสดงเวลารอคอยโดยเฉลี่ยของแต่ละไฟล์



5) แท็ป Top Objects แสดงวัตถุเช่น (ตาราง) ในฐานข้อมูลที่มีการรอคอยสูง เราสามารถใช้ข้อมูลนี้ร่วมกับแท็ป Top Files ในการจะย้ายตารางที่มีการรอคอยสูง ๆ ออกจากไฟล์ได้
บริเวณทางด้านซ้ายจะแสดงวัตถุต่าง ๆ (ส่วนใหญ่จะเป็นตาราง) ที่มีการรอคอยสูงเปรียบเทียบกันในแผนภูมิ Pie Chart ส่วนทางด้านขวาจะแสดงเวลารอคอยโดยเฉลี่ยของแต่ละวัตถุ



Enterprise Manager ยังมี Features อื่น ๆ อีกมากมายที่ช่วยในการบริหารฐานข้อมูล ด้วยความที่เป็น Graphic จึงทำให้ใช้งานได้ง่าย และการเห็นภาพหรือกราฟต่าง ๆ จะทำให้เข้าใจได้ง่าย หวังว่า Features ที่เกี่ยวกับ Performance ที่นำมาลงนี้น่าจะเป็นตัวตั้งต้นที่จะทำให้ผู้อ่านสามารถขยายผลในการศึกษาการใช้งานต่อไปโดยไม่ยาก

บทความที่เกี่ยวเนื่องกัน
1.การตรวจสอบการทำงานของ Session
2.การใช้ TKPROF เพื่อแสดงสถิติการรันของคำสั่ง SQL
3.Performance monitoring & tuning

No comments:

Post a Comment