16

Execution plan for sql

Embed Size (px)

Citation preview

Page 1: Execution plan for sql
Page 2: Execution plan for sql

บทน ำ

ระบบฐานขอ้มูลเป็นการเก็บรวบรวมสารสนเทศใหส้ามารถถูกเขา้ถึง จดัการ และแกไ้ขไ้ดง้า่ย เน่ืองจากการขยายตวั

อยา่งรวมเร็วของอินเทอร์เน็ต ท าใหป้ริมาณขอ้มูลเพ่ิมข้ึนอยา่งรวดเร็ว ความซบัซอ้นของขอ้มูลและค วามตอ้งการการ

ตอบสนองท่ีรวดเร็วกลายเป็นปัญหาท่ีส าคญัในการเขา้ถึงฐานขอ้มูล เทคนิคหน่ึงท่ีจะเพ่ิมประสิทธิภาพการสอบถามขอ้มูล

คือ การเพ่ือปรับค าสั่งเอสคิวแอล

Page 3: Execution plan for sql

กำรจัดกำรกับปัญหำ

กา รสอบถ ามข ้อ มู ล (Query) ท่ี มี ป ริ ม าณง านม าก มี ค ว า มซับซ ้อ น แล ะฐ านข ้อ มู ล มี ขนา ด ใ หญ ่

(Surajit,2009)การเพ่ิมประสิทธิภาพการสอบถามขอ้มูลเป็นกระบวนการท่ีมีความส าคญัในการด าเนินการของฐานขอ้มูล

เชิงสมัพนัธ ์(Relational Database)

ปัจจุบนัมีการขยายตวัอยา่งรวดเร็วของอินเทอร์เน็ต ปริมาณขอ้มูลมีการเพ่ิมข้ึนในอตัราแบบเอ็กซโ์พเนเชียล ธุรกิจตา่งๆ

จึงตอ้งสรา้งฐานขอ้มูลขนาดใหญเ่พ่ือรับมือกบัอตัราการเพ่ิมข้ึนอนัมหาศาลของขอ้มูล (J Skarie et al., 2007)

สำเหตุของปัญหำ

Page 4: Execution plan for sql

โครงสร้ำงและขัน้ตอนกำรท ำงำนของส่วนประมวลผลกำรสอบถำมข้อมูลเป็นดังรูปที่ 1

Scanner, Parser and Translator

Query Optimizer

Query Code Generator

Query Execution Engine

Metabase

database

Page 5: Execution plan for sql

ตัวอย่ำงกำรสอบถำมข้อมูล

1. ให้แสดงรำยละเอียดของนักเรียนที่ได้เกรด A ในภำคเรียนล่ำสุด (สำมำรถเขียนค ำส่ัง SQL ได้ 3 วธีิ)

1. A standard join:

SELECT * FROM Student, Registration

WHERE Student.Student_id= Registration.Student_id

AND

Registration.grade = ‘A’;

Page 6: Execution plan for sql

3. A correlated subquery:

SELECT * FROM Student

WHERE

0 <

(SELECT count(*)

FROM Registration

WHERE grade = ‘A’) AND

Student_id=Student. Student_id);

2. A nested query:

SELECT * FROM Student

WHERE

Student_id =

(SELECT Student_id

FROM Registration

WHERE grade = ‘A’);

Page 7: Execution plan for sql

กำรใช้แผนปฏิบัติกำร (EXECUTION PLAN)

แผนปฏิบติัการ คือ การแสดงรายละเอียดของขัน้ตอนในการประมวลผลค าสั่ง SQL วา่แตล่ะขัน้ตอนมีการแสดงรายละเอียดในการประมวลผล

มีอะไรบา้ง และมีจ านวนแถวท่ีประมวลผลไปเทา่ไร โดยแสดงการท างานแบบตน้ไม ้(Tree) (Maria Colgan, 2008)

Page 8: Execution plan for sql

กฎพืน้ฐำนของ EXECUTION PLAN TREE

กฎพืน้ฐำนของ Execution Plan Tree (Ramsundaram,2009) มีดังนี ้

1. Execution Plan Tree จะประกอบไปดว้ยโหนดราก (Root Note)

2. โหนดพอ่แม ่(Parrent Node) สามารถมีโหนดลูก (Child Note) ได ้1 โหนดหรือมากกวา่และโหนดพอ่แมจ่ะมีรหสั (ID) นอ้ยกวา่โหนดลูก

3. โหนดลูกสามารถมีโหนดพอ่แมไ่ดเ้พียงโหนดเดียวเทา่นั้น โดยจะเขียนค าสั่งของโหนดลูกใหเ้ย้ืองไปทางขวา และในกรณีท่ีมีโหนดลูกหลายโหนดโหนดลูกเหลา่น้ีก็จะเขียนใหอ้ยูใ่นระดบัเดียวกนั

Page 9: Execution plan for sql

ตัวอย่ำง Execution Plan

Page 10: Execution plan for sql
Page 11: Execution plan for sql

ต้องกำรสอบถำมข้อมูลนับจ ำนวนช่องทำงกำรขำยแยกในแต่ละรหัสของช่องทำงกำรขำย โดยไม่นับช่องทำงกำรขำยรหสัที่เท่ำกับ 3 (สำมำรถเขียนค ำส่ัง SQL ได้ 2 วิธี)

1. ใช ้Having clasue

SELECT Channel_id, count(Channel_id)

FROM Mysales

GROUP BY Channel_id

HAVING Channel_id != 3;

ตัวอย่ำง Execution Plan

Page 12: Execution plan for sql
Page 13: Execution plan for sql

2. ใช้ Where clasue

SELECT Channel_id, count(Channel_id)

FROM Mysales

WHERE Channel_id != 3

GROUP BY Channel_id;

Page 14: Execution plan for sql
Page 15: Execution plan for sql

กำรเปรียบเทยีบของ Having clasue และ Where clasue

Having clasue

Where clasue

Page 16: Execution plan for sql

สรุป

การสอบถามขอ้มูลเป็นการสอบถามไปยงัฐานขอ้มูลเพ่ือดึงขอ้มูลท่ีตอ้งการออกมาตามเง่ือนไขท่ีตอ้งการ เม่ือมีปริมาณขอ้มูลจ านวนมาก

และมีความซบัซอ้น จะใชเ้วลาในการสอบถามขอ้มูลเป็นเวลานาน การสอบถามขอ้มูลไดเ้ร็วข้ึน คือ การปรับแตง่ค าสั่ง เอสคิวแอล ซ่ึงสามารถแสดง

รายละเอียดของขัน้ตอนในการประมวลผลค าสั่ง SQL แสดงคา่สถิติท่ีส าคญัของการใชท้รัพยากรของเคร่ืองอีกดว้ย จากการน าเสนอในครั้งน้ีจะท าให ้

เห็นถึงประโยชน์และวิธีการใชง้าน Execution Plan เพ่ือใหก้ารสอบถามขอ้มูลไดร้วดเร็วข้ึน