หน้าแรก www.oracleskill.com ข่าวความเคลื่อนไหว oracle และ oracleskill.com ความรู้ เทคนิค oracle บทความ oracle คัดสรรจากต่างประเทศ คอร์สเรียน Oracleและ บริการ ประวัติ ความเป็นมา เพิ่มพูนทักษะในการหางาน IT Oracle Webboard แลกเปลี่ยนความรู้  
 
 

 

 

Google
 
 

ดักจับ SQL ที่ทำให้เกิดการอ่านดิสก์สูง

(Finding SQL Statements with High Disk Reads)

 
 
 

การเขียน SQL statement นอกจาก จะต้องได้ผลลัพธ์ ตามต้องการ และ ถูกต้อง แล้ว ควรต้องคำนึงถึง ผลกระทบ กับ ความมีประสิทธิภาพ ของฐานข้อมูล (database performance ) ด้วย

ถ้า SQL statement ที่เราเขียนนั้น ทำให้เกิดการอ่านดิสก์สูง ทำให้เกิด disk I/O wait มาก จะทำให้ database performance ตกต่ำลง นำมาซึ่ง การตอบสนองของฐานข้อมูลช้า ตามมาติดๆด้วย การบ่นของ user ผู้ใช้งาน -_-''

เราสามารถดักจับ SQL statement ที่ทำให้เกิดการอ่านดิสก์สูง ได้ด้วยการใช้ script high_disk_read.sql ต่อไปนี้

 
     
 
  ไฟล์ high_disk_read.sql  
 
set echo off
set feedback off

DEFINE blocks_read = 1000 (NUMBER)

COLUMN parsing_user_id  FORMAT 9999999 HEADING 'User Id'
COLUMN executions       FORMAT 9999     HEADING 'Exec'
COLUMN sorts            FORMAT 99999    HEADING 'Sorts'
COLUMN command_type     FORMAT 99999    HEADING 'CmdT'
COLUMN disk_reads       FORMAT 999,999,999 HEADING 'Block Reads'
COLUMN sql_text         FORMAT a40  HEADING 'Statement' WORD_WRAPPED

SET LINES 130
SET PAGESIZE 500

SELECT parsing_user_id, executions, sorts, command_type,
disk_reads, sql_text
FROM v$sqlarea
WHERE disk_reads > &&blocks_read
ORDER BY disk_reads;
/

set echo off
SET LINES 80
 
     
  เวลาเอาไปใช้งาน ก็เอาไป run ใน sql*plus ด้วย user SYS หรือ SYSTEM ดังนี้  
 
SQL> connect system/password@yourDB
SQL> @/path/to/high_disk_read.sql
 
  สำหรับค่า DEFINE blocks_read = 1000 (NUMBER) เราสามารถเปลี่ยนตัวเลขได้ ตามต้องการครับ  
     
  RELATE LINK :  
     
     
 

 

 

พบปัญหา website , link เสีย ,แลก link,แสดงความเห็น หรือ ติดต่อเป็นสปอนเซอร์สนับสนุน
email : webmaster@oracleskill.com
 
All Rights Reserved 2007. http://www.oracleskill.com.