Upload
satra-eadtrong
View
58
Download
0
Embed Size (px)
Citation preview
บทน ำ
ระบบฐานขอ้มูลเป็นการเก็บรวบรวมสารสนเทศใหส้ามารถถูกเขา้ถึง จดัการ และแกไ้ขไ้ดง้า่ย เน่ืองจากการขยายตวั
อยา่งรวมเร็วของอินเทอร์เน็ต ท าใหป้ริมาณขอ้มูลเพ่ิมข้ึนอยา่งรวดเร็ว ความซบัซอ้นของขอ้มูลและค วามตอ้งการการ
ตอบสนองท่ีรวดเร็วกลายเป็นปัญหาท่ีส าคญัในการเขา้ถึงฐานขอ้มูล เทคนิคหน่ึงท่ีจะเพ่ิมประสิทธิภาพการสอบถามขอ้มูล
คือ การเพ่ือปรับค าสั่งเอสคิวแอล
กำรจัดกำรกับปัญหำ
กา รสอบถ ามข ้อ มู ล (Query) ท่ี มี ป ริ ม าณง านม าก มี ค ว า มซับซ ้อ น แล ะฐ านข ้อ มู ล มี ขนา ด ใ หญ ่
(Surajit,2009)การเพ่ิมประสิทธิภาพการสอบถามขอ้มูลเป็นกระบวนการท่ีมีความส าคญัในการด าเนินการของฐานขอ้มูล
เชิงสมัพนัธ ์(Relational Database)
ปัจจุบนัมีการขยายตวัอยา่งรวดเร็วของอินเทอร์เน็ต ปริมาณขอ้มูลมีการเพ่ิมข้ึนในอตัราแบบเอ็กซโ์พเนเชียล ธุรกิจตา่งๆ
จึงตอ้งสรา้งฐานขอ้มูลขนาดใหญเ่พ่ือรับมือกบัอตัราการเพ่ิมข้ึนอนัมหาศาลของขอ้มูล (J Skarie et al., 2007)
สำเหตุของปัญหำ
โครงสร้ำงและขัน้ตอนกำรท ำงำนของส่วนประมวลผลกำรสอบถำมข้อมูลเป็นดังรูปที่ 1
Scanner, Parser and Translator
Query Optimizer
Query Code Generator
Query Execution Engine
Metabase
database
ตัวอย่ำงกำรสอบถำมข้อมูล
1. ให้แสดงรำยละเอียดของนักเรียนที่ได้เกรด A ในภำคเรียนล่ำสุด (สำมำรถเขียนค ำส่ัง SQL ได้ 3 วธีิ)
1. A standard join:
SELECT * FROM Student, Registration
WHERE Student.Student_id= Registration.Student_id
AND
Registration.grade = ‘A’;
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’);
กำรใช้แผนปฏิบัติกำร (EXECUTION PLAN)
แผนปฏิบติัการ คือ การแสดงรายละเอียดของขัน้ตอนในการประมวลผลค าสั่ง SQL วา่แตล่ะขัน้ตอนมีการแสดงรายละเอียดในการประมวลผล
มีอะไรบา้ง และมีจ านวนแถวท่ีประมวลผลไปเทา่ไร โดยแสดงการท างานแบบตน้ไม ้(Tree) (Maria Colgan, 2008)
กฎพืน้ฐำนของ EXECUTION PLAN TREE
กฎพืน้ฐำนของ Execution Plan Tree (Ramsundaram,2009) มีดังนี ้
1. Execution Plan Tree จะประกอบไปดว้ยโหนดราก (Root Note)
2. โหนดพอ่แม ่(Parrent Node) สามารถมีโหนดลูก (Child Note) ได ้1 โหนดหรือมากกวา่และโหนดพอ่แมจ่ะมีรหสั (ID) นอ้ยกวา่โหนดลูก
3. โหนดลูกสามารถมีโหนดพอ่แมไ่ดเ้พียงโหนดเดียวเทา่นั้น โดยจะเขียนค าสั่งของโหนดลูกใหเ้ย้ืองไปทางขวา และในกรณีท่ีมีโหนดลูกหลายโหนดโหนดลูกเหลา่น้ีก็จะเขียนใหอ้ยูใ่นระดบัเดียวกนั
ตัวอย่ำง Execution Plan
ต้องกำรสอบถำมข้อมูลนับจ ำนวนช่องทำงกำรขำยแยกในแต่ละรหัสของช่องทำงกำรขำย โดยไม่นับช่องทำงกำรขำยรหสัที่เท่ำกับ 3 (สำมำรถเขียนค ำส่ัง SQL ได้ 2 วิธี)
1. ใช ้Having clasue
SELECT Channel_id, count(Channel_id)
FROM Mysales
GROUP BY Channel_id
HAVING Channel_id != 3;
ตัวอย่ำง Execution Plan
2. ใช้ Where clasue
SELECT Channel_id, count(Channel_id)
FROM Mysales
WHERE Channel_id != 3
GROUP BY Channel_id;
กำรเปรียบเทยีบของ Having clasue และ Where clasue
Having clasue
Where clasue
สรุป
การสอบถามขอ้มูลเป็นการสอบถามไปยงัฐานขอ้มูลเพ่ือดึงขอ้มูลท่ีตอ้งการออกมาตามเง่ือนไขท่ีตอ้งการ เม่ือมีปริมาณขอ้มูลจ านวนมาก
และมีความซบัซอ้น จะใชเ้วลาในการสอบถามขอ้มูลเป็นเวลานาน การสอบถามขอ้มูลไดเ้ร็วข้ึน คือ การปรับแตง่ค าสั่ง เอสคิวแอล ซ่ึงสามารถแสดง
รายละเอียดของขัน้ตอนในการประมวลผลค าสั่ง SQL แสดงคา่สถิติท่ีส าคญัของการใชท้รัพยากรของเคร่ืองอีกดว้ย จากการน าเสนอในครั้งน้ีจะท าให ้
เห็นถึงประโยชน์และวิธีการใชง้าน Execution Plan เพ่ือใหก้ารสอบถามขอ้มูลไดร้วดเร็วข้ึน