Thursday, April 16, 2009

การใช้ TKPROF เพื่อแสดงสถิติการรันของคำสั่ง SQL

ข้อเขียนนี้ช่วยฉัน: 
Last Updated: 9/4/2009

การรันคำสั่ง SQL ถ้าคุณต้องการรู้ว่าคำสั่งของคุณมีประสิทธิภาพดีมากน้อยแค่ไหน หรือว่าใช้เวลาในการรันมากน้อยเพียงใด จากสาเหตุอะไร คุณสามารถใช้โปรแกรม TKPROF ซึ่งเป็นโปรแกรมที่ถูกติดตั้งมาพร้อมกับตอนที่คุณลง Oracle โดยเริ่มจากคุณสั่งให้ Oracle ทำการบันทึกข้อมูลทางสถิติ (Trace)ของคำสั่ง SQL ที่คุณต้องการเสียก่อน แล้วจึงใช้ TKPROF ในการจัดรูปแบบข้อมูลเหล่านี้ให้อ่านได้เข้าใจง่าย โดย TKPROF จะบอกข้อมูลที่เกี่ยวกับประสิทธิภาพ เช่น แผนการทำงานของคำสั่ง SQL, เวลาของ CPU ที่ใช้ในการประมวลผลเป็นต้น

การใช้ TKPROF ประกอบด้วยขั้นตอนต่อไปนี้
1. ลบ Cache ใน Shared Pool และ DB Buffer
SQL> alter system flush shared_pool;
SQL> alter system flush buffer_cache;

2. ตั้งค่าพารามิเตอร์ TIMED_STATISTICS = TRUE
ดูค่าของพารามิเตอร์
SQL> show parameter timed_statistics;
เปลี่ยนค่าพารามิเตอร์เป็น TRUE
SQL> alter system set timed_statistics = true;

3. สร้าง Plan Table โดยรันสคริปต์ utlxplan, Plan Table เอาไว้เก็บค่าข้อมูลสถิติที่เกิดขึ้นตอนรันคำสั่ง SQL (ตำแหน่งของสคริปต์ utlxplan ขึ้นอยู่กับไดเรคทอรีที่ลง Oracle และระบบปฏิบัติการ)
SQL> @c:\oracle\product\10.2.0\db_1\rdbms\admin\utlxplan

4. กำหนดให้สามารถ Trace คำสั่ง SQL ได้ การ Trace จะทำทุกคำสั่งที่รันใน Session นี้ จนกว่าจะ set sql_trace กลับเป็น False
SQL> alter session set sql_trace=true;

5. รันคำสั่ง SQL ที่ต้องการดูค่าสถิติ ให้ใส่ remark ไว้ในคำสั่งด้วย เพื่อที่ว่าเวลาเรารันคำสั่งเดียวกันหลาย ๆ ครั้ง เราจะได้สามารถแยกคำสั่งแต่ละคำสั่งได้ง่าย
SQL> SELECT /*sql1*/ * from scott.emp where ename = ‘KING’;

6. ออกจาก SQL เพื่อเข้า OS Prompt และลบไฟล์ tkprof ตัวเก่าที่เรารันเอาไว้ออก เมื่อเรารันคำสั่งเสร็จข้อมูลต่าง ๆ ที่ได้จาก sql trace จะไปเก็บไว้ในไฟล์ trace(.trc) ตัวล่าสุด ซึ่งถ้าเป็น Oracle10g จะอยู่ในไดเรคทอรี่ udump เช่นใน C:\oracle\product\10.2.0\admin\orcl\udump\orcl_ora_3552.trc แต่ถ้าเป็นเวอร์ชั่น 11g จะอยู่คนละที่กันเช่นที่ C:\app\tanakorn\diag\rdbms\orcl\orcl\trace> เป็นต้น

7. เนื่องจาก Trace File ที่เราได้ใช้ เป็นข้อมูลทางสถิติที่ยังไม่ได้จัดรูปแบบทำให้อ่านยาก จึงต้องใช้โปรแกรม TKPROF นี้เพื่อจัดรูปแบบข้อมูลในไฟล์ให้อ่านได้เข้าใจง่าย
C:\> tkprof C:\oracle\product\10.2.0\admin\orcl\udump\orcl_ora_3552.trc d:\tkprof.prf explain=system/sys table=system.plan_table sys=no sort=(prscpu,execpu,fchcpu)
TKPROF: Release 11.1.0.6.0 - Production on Thu Apr 9 23:48:50 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

โปรแกรมจะจัดรูปแบบไฟล์ orcl_ora_3552.trc แล้วเก็บไว้ใน tkprof.prf โดยการจัดรูปแบบจะใช้ตาราง Plan Table ใน Schema system

8. เมื่อรันเสร็จ ข้อมูลทางสถิติจะถูกเก็บไว้ในไฟล์ TKPROF.prf

ส่วนเรื่องการอ่านไฟล์ TKPROF.prf สามารถหาอ่านได้จากเอกสารบนอินเตอร์เนทซึ่งมีอยู่จำนวนไม่น้อย

No comments:

Post a Comment