14
721 The Journal of KMUTNB., Vol. 22, No. 3, Sep. - Dec. 2012 วารสารวิชาการพระจอมเกล้าพระนครเหนือ ปีท22 ฉบับที3 ก.ย. - ธ.ค. 2555 1 อาจารย์ ภาควิชาคณิตศาสตร์ สถิติและคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยอุบลราชธานี Tel. 0-4535-3401 Ext. 4518, E-mail: [email protected] รับเมื่อ 5 กรกฎาคม 2554 ตอบรับเมื่อ 16 มีนาคม 2555 การวิเคราะห์แผนการสืบค้นเพื่อประเมินประสิทธิภาพการทำางานของ อ๊อพติไมเซอร์ที่มีต่อคำาสั่งเอสคิวแอลแบบซีเล็กชัน Analysis of the Query Plan for Assessing Optimizer Performance of SQL Select Statemant ชยาพร แก่นสาร์ 1 Chayaporn Kaensar 1 บทคัดย่อ ภาษาเอสคิวแอล (Structured Query Languages) เป็นองค์ประกอบหนึ่งที่สำาคัญในโปรแกรมหรือระบบงาน ต่างๆ เพราะช่วยเข้าถึงและจัดการข้อมูลภายในฐาน ข้อมูลได้ ดังนั้นความเร็วหรือประสิทธิภาพการทำางาน ของแอพพลิเคชันส่วนหนึ่ง จึงเกี่ยวข้องกับรูปแบบคำาสั่ง ภาษาเอสคิวแอลโดยตรง ฉะนั้นในบทความนี้จึงต้องการ นำาเสนอการวิเคราะห์ และประเมินถึงประสิทธิภาพ การทำางานของดีบีเอ็มเอสที่มีต่อคำาสั่งเอสคิวแอล โดยใช้ แผนการสืบค้น (Query Plan) ซึ่งจะแบ่งการทำางานออก เป็น 4 ขั้นตอนหลักคือ 1) จัดเตรียมเครื่องมือและข้อมูล การทดสอบ โดยจะใช้ออราเคิล เวอร์ชัน 11.1 และ SQL Developer เวอร์ชัน 1.5.5 2) ออกแบบคำาสั่งเอสคิวแอล 3) ประมวลผลคำาสั่งเอสคิวแอลและสร้างแผนการสืบค้น และ 4) วิเคราะห์และสรุปผลการทำางานตามลำาดับ ซึ่ง ผลการวิเคราะห์และทดสอบการทำางานพบว่ารูปแบบ การเข้าถึงข้อมูล วิธีการลิงค์ตาราง การใช้ฟังก์ชันภายใน คำาสั่ง การใช้ประโยคสืบค้นย่อยแบบวนซ้ำา หรือการใช้ CASE และ UNION นั้นจะส่งผลต่อประสิทธิภาพการ เข้าถึงข้อมูลของออราเคิล โดยประโยชน์ที่คาดว่าจะได้ รับจากการทดสอบดังกล่าวคือจะช่วยให้นักพัฒนาระบบ หรือผู้ใช้ที่สืบค้นข้อมูลด้วยภาษาเอสคิวแอลได้เข้าใจถึง ปัจจัยต่างๆ ที่มีผลต่อประสิทธิภาพการทำางานของดีบี เอ็มเอส รวมทั ้งสามารถออกแบบและสร้างคำาสั ่งเอสคิวแอล เพื่อสืบค้นข้อมูลให้ทำางานได้อย่างเหมาะสมทั้งในด้าน ของเวลาและการใช้งานทรัพยากรในระบบ คำาสำาคัญ: การปรับปรุงการทำางานในคำาสั่งเอสคิวแอล การปรับปรุงการทำางานของฐานข้อมูล การสร้างแผนการสืบค้น ออราเคิลเวอร์ชัน 11g Abstract SQL (Structured Query Language) is an important element of software applications because it is a database computer declarative language designed for managing data in the Database System. Therefore, SQL influences system performance directly. This article presents an analysis and evaluation of the Oracle database performance by using the query plan. This work has been divided into 4 steps. First, an oracle

การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

721

The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555

1 อาจารย ภาควชาคณตศาสตร สถตและคอมพวเตอร คณะวทยาศาสตร มหาวทยาลยอบลราชธาน Tel. 0-4535-3401 Ext. 4518, E-mail: [email protected]

รบเมอ 5 กรกฎาคม 2554 ตอบรบเมอ 16 มนาคม 2555

การวเคราะหแผนการสบคนเพอประเมนประสทธภาพการทำางานของ

ออพตไมเซอรทมตอคำาสงเอสควแอลแบบซเลกชน

Analysis of the Query Plan for Assessing Optimizer Performance of SQL Select Statemant

ชยาพร แกนสาร1 Chayaporn Kaensar1

บทคดยอ

ภาษาเอสควแอล (Structured Query Languages) เปนองคประกอบหนงทสำาคญในโปรแกรมหรอระบบงานตางๆ เพราะชวยเขาถงและจดการขอมลภายในฐานขอมลได ดงนนความเรวหรอประสทธภาพการทำางานของแอพพลเคชนสวนหนง จงเกยวของกบรปแบบคำาสงภาษาเอสควแอลโดยตรง ฉะนนในบทความนจงตองการนำาเสนอการวเคราะห และประเมนถงประสทธภาพ การทำางานของดบเอมเอสทมตอคำาสงเอสควแอล โดยใชแผนการสบคน (Query Plan) ซงจะแบงการทำางานออกเปน 4 ขนตอนหลกคอ 1) จดเตรยมเครองมอและขอมลการทดสอบ โดยจะใชออราเคล เวอรชน 11.1 และ SQL Developer เวอรชน 1.5.5 2) ออกแบบคำาสงเอสควแอล 3) ประมวลผลคำาสงเอสควแอลและสรางแผนการสบคน และ 4) วเคราะหและสรปผลการทำางานตามลำาดบ ซงผลการวเคราะหและทดสอบการทำางานพบวารปแบบ การเขาถงขอมล วธการลงคตาราง การใชฟงกชนภายในคำาสง การใชประโยคสบคนยอยแบบวนซำา หรอการใช CASE และ UNION นนจะสงผลตอประสทธภาพการเขาถงขอมลของออราเคล โดยประโยชนทคาดวาจะได

รบจากการทดสอบดงกลาวคอจะชวยใหนกพฒนาระบบ หรอผใชทสบคนขอมลดวยภาษาเอสควแอลไดเขาใจถงปจจยตางๆ ทมผลตอประสทธภาพการทำางานของดบ เอมเอส รวมทงสามารถออกแบบและสรางคำาสงเอสควแอล เพอสบคนขอมลใหทำางานไดอยางเหมาะสมทงในดานของเวลาและการใชงานทรพยากรในระบบ

คำาสำาคญ: การปรบปรงการทำางานในคำาสงเอสควแอล การปรบปรงการทำางานของฐานขอมล การสรางแผนการสบคน ออราเคลเวอรชน 11g

AbstractSQL (Structured Query Language) is an important

element of software applications because it is a database computer declarative language designed for managing data in the Database System. Therefore, SQL influences system performance directly. This article presents an analysis and evaluation of the Oracle database performance by using the query plan. This work has been divided into 4 steps. First, an oracle

Page 2: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

722

วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012

database environment is set up and a database object is created using Oracle version 11g (Release 1) and SQL Developer version 1.5.5 is used as the main tool for SQL execution. Secondly, an SQL select statement was designed according to the query plan subject in different ways. Thirdly, the SQL command was executed and a query plan was generated. Finally, we discuss and conclude the results. In summary, we found that using a query plan based on access path, join method, and an SQL pattern such as the oracle function, correlated sub query, and the CASE and UNION function will influence system performance. Further, the finding of this article may help developers understand how to perform proper SQL commands in order to improve database performance and minimize resource utilization.

Keywords: SQL Tuning, Database Performance Improvement, Query Plan Generation, Oracle 11g

1. บทนำาปจจบนพบวามการใชขอมลเพอสนบสนนการ

ตดสนใจภายในองคกรธรกจ เชน การสรางรายงานเพอ สรปสารสนเทศทเปนประโยชนแกผบรหาร หรอการคนหาและจดการขอมลในระบบนนมแนวโนมทเพมขนอยางตอเนองและรวดเรว ซงเรองดงกลาวจะสงผลกระทบโดยตรงตอความเรวในการประมวลผลตางๆ ในระบบงาน เนองจากโดยสวนใหญนกพฒนาระบบมกจะฝงโคดภาษาเอสควแอล (Structured Query Language) ลงในระบบหรอแอพพลเคชนเพอใชเขาถงและจดการกบขอมลตางๆ ภายในฐานขอมลได ซงหากสวนคำาสงเหลานนไมมประสทธภาพหรอใชเวลาในการประมวลผลทนานแลว กจะทำาใหแอพพลเคชนหรอระบบงานทเกยวของใชเวลาในการประมวลผลทนานขนดวย

ดงนนจากประเดนดงกลาว แนวคดการปรบปรง

การทำางานในคำาสงเอสควแอล (SQL Tuning) ซงหมายถง กระบวนการทใชตรวสอบและปรบปรงโครงสรางคำาสงเอสควแอล เพอใหแอพพลเคชนหรอการทำางานตางๆ นนสามารถจดการกบขอมลในฐานขอมลไดอยางมประสทธภาพทงในดานเวลาและการใชทรพยากร [1] จงเปนเรองสำาคญมาก และไดถกศกษาและพฒนาในงานวจยตางๆ มาอยาง ตอเนองมากมาย ดงจะเหนไดจาก [2]-[6]

ฉะนนในบทความนจงตองการนำาเสนอถงวธการวเคราะหและประเมนถงประสทธภาพการทำางานของ ออพตไมเซอร (Optimizer) ซงเปนคอมโพเนนตสำาคญในดบเอมเอสททำาหนาทประมวลผลคำาสงเอสควแอลตางๆ โดยใชเทคนคหรอขอกำาหนดตางๆ ทกำาหนดขนมา [7] โดยวธการสำาคญหนงคอการวเคราะหจากแผนการสบคน (Query Plan) ซงเปนขอมลสำาคญทใชเกบลำาดบการประมวลผลคำาสงเอสควแอลของออพตไมเซอรซงจะ ชวยใหผใชทตองการสบคนขอมลดวยภาษาเอสควแอลไดทราบและเขาใจถงปจจยตางๆ ทมผลตอประสทธภาพการทำางานของระบบจดการฐานขอมล ทงในดานเวลาและ การใชงานทรพยากรในระบบ โดยไดจดแบงการนำาเสนอ บทความออกเปน 4 สวนคอ แนวคดการประมวลผลคำาสง เอสควแอล สภาพแวดลอมทใชทดสอบระบบ ผลการ ทดลอง อภปรายและสรปผลตามลำาดบ

2. แนวคดการประมวลผลคำาสงเอสควแอล โดยทวไปผใชจะเปลยนแปลง หรอแกไขขอมล

ตางๆ ภายในฐานขอมลผานซอฟตแวรทเรยกวา ระบบจดการฐานขอมลหรอดบเอมเอส (DBMS: Database Management System) โดยใชภาษาเอสควแอล ซงเปนภาษามาตรฐานทถกออกแบบมาเพอจดการขอมลผานระบบจดการฐานขอมลเชงสมพนธ (RDBMS)

โดยคอมโพเนนตในดบเอมเอสทนบเปนกลไกสำาคญในการจดการงานดงกลาวไดนนเรยกวา ออพตไมเซอร (Optimizer) ซงสามารถจดการและประมวลผลคำาสงสบคนและคำาสงจดการขอมลตางๆ ได โดยมขนตอน ในการประมวลผลคำาสงเอสควแอลดงนคอ [8]-[10] (รปท 1)

Page 3: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

723

The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555

1. เมอระบบไดรบคำาสงเอสควแอลจากผใชระบบ จะสงชดคำาสงดงกลาวไปยงคอมโพเนนตทเรยกวา Parser ใหทำาการวเคราะหรปแบบและความถกตองของประโยค (Syntax Checking) รวมถงตรวจสอบถงความถกตองของออบเจคหรอตารางตางๆ ทมการอางถงในระบบฐาน ขอมล ซงผลลพธจะไดรปแบบคำาสงเอสควแอลทผาน การตรวจสอบตามโครงสรางทประโยคทถกตองแลว (Verified SQL Query)

2. จากนนจะสงผลคำาสงทผานการตรวจสอบในขอ 1 ไปยงออพตไมเซอร เพอวเคราะหและสรางแผนการสบคน โดยม 2 รปแบบคอแบบ RBO (Ruled Based Optimizer) ซงใชกฎความสมพนธเพอสรางการประมวลผลคำาสง หรอสรางอนเดกซใหกบขอมล ในขณะท CBO (Cost Based Optimizer) จะใชขอมลสถตเขามาชวยประเมนและกำาหนดแผนการสบคนกอนประมวลผลหรอรนคำาสงจรง เชน จำานวนแถวขอมลหรอไบตขอมลทเขาถง เปนตน [11],[12]

3. จากนนเมอ Row Source Generator ไดรบแผนการสบคนแลว กจะสรางความสมพนธและลำาดบการทำางานในรปแบบของทร (Tree Structure) กอนสงโครงสรางดงกลาวไปยง SQL Executor เพอประมวล

ผลคำาสงตามแผนดงกลาวกอนสงผลลพธไปแสดงผลยงผใชตอไป

2.1 ความหมายและความสำาคญของแผนการสบคน

(Definition and Benefits of Query Plan)จากขนตอนการทำางานในรปท 1 พบวาการสราง

แผนการสบคนนน นบเปนขนตอนหนงทสำาคญเนองจากเปนสวนกำาหนดลำาดบการทำางานของคำาสงและโอเปอเรชนใหกบออพตไมเซอรเพอดำาเนนการรนคำาสงนนๆ

โดยแผนการสบคน (Query Plan หรอ Execution Plan) หมายถงแผนการทำางานทเกบลำาดบการทำางานของ คำาสงเอสควแอล เชน select, update, insert และ delete โดยออพตไมเซอรจะประมวลผลคำาสงตามขอมลตางๆ ทระบในแผนดงกลาว เชน ลำาดบการทำางาน การเขาถง ขอมล วธการลงคขอมล หรอรปแบบการใชโอเปอเรเตอรตางๆ เปนตน ซงขอดคอจะทำาใหผใชไดทราบถงรปแบบและการจดการของดบเอมเอสในระดบภายใน นนคอหากทราบการทำางานของแผนสบคน กจะสามารถทราบไดวามโครงสรางคำาสง ลำาดบการทำางาน หรอภาระการโหลดงานทมากหรอนอยเกดขนทโอเปอเรชนใด ซงกชวยใหสามารถปรบแตงโครงสรางคำาสงเอสควแอลทเหมาะสมได ดงรปท 2

รปท 1 การทำางานของออพตไมเซอรในการประมวลผลคำาสง

รปท 2 ตวอยางแผนการสบคน [1]

Page 4: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

724

วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012

โดยแผนการสบคนประกอบดวยขอมลพนฐานตางๆ ดงนคอ

1. Operation เปนรายการทำางานหรอคำาสงยอยของ โอเปอรชนตางๆ ทออพตไมเซอรจะประมวลผล โดยจะเรมรนจากโหนดลกหรอ Child Node กอน (โอเปอเรชน ทอยดานขวามอสด) จากนนรนโหนดแมหรอ Parent Node (โอเปอเรชนทอยใกลทสดของโหนดลกนน) แตหากมโอเปอเรชนทระดบเทากน กใหเรมรนทรหสดานบนกอน เชน จากรปท 2 จะมลำาดบการทำางานคอ 5, 3, 4, 2, 6 และ 1 ตามลำาดบ [1]

2. Name เปนชอดาตาเบสออบเจคทมการอางถง เชน ตาราง หรออนเดกซทมการใชงาน

3. Rows, Bytes เปนจำานวนแถว/ไบต ทมการอานหรอโหลดขอมลเขาในระบบ

4. Cost เปนคานำาหนกทระบบสญเสยไปในการประมวลผลคำาสงเอสควแอลนน ซงจะไมมหนวยการวด โดยออพตไมเซอรจะคำานวณคาดงกลาวจากการใชงานซพย (CPU Cost) และคาการตดตอใชงานกบดสกหรอสวนแสดงผล (I/O Cost) ดงแสดงการคำานวณในสมการดง [11], [12]

5. %CPU เปนคาอตราสวนทออพตไมเซอรใชประมวลผลและทำางานสำาหรบโอเปอเรชนนนๆ

6. Time เปนเวลาทใชในการประมวลผลคำาสง มหนวยเปน Millisecond (ms)

โดยขนตอนการวเคราะหแผนการสบคนนน จะเรมดวยการสรางคำาสงเอสควแอล ดงตวอยางคำาสง (1) ซงประกอบดวยสวนการลงคตาราง (Join Table) และการใชประโยคสบคนยอย (Sub Query) จากนนจงสรางแผนการสบคน โดยรนคำาสงผานโปรแกรม SQL Developer ซงจะไดผลลพธดงรปท 2

โดยจากรปท 2 จะพบวาการศกษาหรอวเคราะหขอมล จากแผนการสบคนนนจะชวยใหผใชเขาใจกระบวนการทำางานของออพตไมเซอรทมตอการประมวลผลคำาสง เอสควแอลได ซงผใชสามารถนำาหลกการเหลานไปออกแบบ และสรางเอสควแอลทเหมาะสม เพอลดการใชงานทรพยากรระบบ และเพมความเรวในการทำางานไดมากขน โดยในบทความนจะแบงการนำาเสนอปจจยทมผลตอการสรางแผนการสบคน ซงสงผลตอการทำางานของ ออพตไมเซอร เชน รปแบบการเขาถงขอมล และวธการลงคขอมลระหวางตาราง เปนตน [11], [14]

2.2 รปแบบการเขาถงขอมล (Access Path)เปนวธหรอรปแบบการเขาถงขอมลในฐานขอมล

โดยเบองตนสามารถแบงได 2 รปแบบหลกคอ [9], [13], 14]

2.2.1 แบบสแกนทงหมด (Full Table Scan หรอ FTS) จะตรวจสอบและอานขอมลทงหมดในทกแถวของตาราง จากนนจงทำาการเลอกขอมลทไมเกยวของ (Filter Out) ออกจากบฟเฟอรหรอหนวยความจำาชวคราว ซงจาก รปท 3 เปนการแสดงการอานขอมลในทกแถวของตาราง เมอมการคนหาแบบแสดงขอมลทงหมดดวยคำาสง “select * from emp”

2.2.2 แบบสแกนโดยใชอนเดกซ (Index Lookup Scan) เปนวธคนหาขอมลดวยอนเดกซทไดถกระบหรอสรางไวในคอลมน (Indexed Column) ในตอนทมการสรางหรอระบขอกำาหนด (Constraint) ภายในตารางไวแลว โดยจะประกอบดวยขอมลอนเดกซ และทอยขอมล

รปท 3 รปแบบสแกนขอมลทงหมด (Full Table Scan)

Page 5: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

725

The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555

หรอรหสแถว (Row ID) ซงเปนคาขอมลภายในคอลมนนนๆ ดงนนเมอออราเคลมการใชอนเดกซในคอลมน ดงกลาว กจะอานคาขอมลทอยในอนเดกซโดยตรง แทนการอานขอมลจากตารางในดสก ซงขอดคอสามารถทำางานไดเรวขน เนองจากลดโอเปอเรชนในการตดตอกบดสกในระบบ โดยรปท 4 เปนการลงค (Mapping) ขอมลระหวางโครงสรางขอมลแบบอนเดกซไปยงคอลมนในตารางทถกกำาหนดหรอสรางเปนอนเดกซ (Index Column) โดยใชขอมล Row ID ซงเปนคาทแสดงลำาดบหมายเลขของแถวขอมลลงคไปยงตารางทจะคนหาขอมล ซงจะทำาใหการคนหาทำาไดรวดเรวขน

2.3 การลงคขอมลระหวางตาราง (Join Method)เปนวธการเชอมหรอลงคขอมล (Join) ระหวาง

ตาราง ซงสามารถจำาแนกรปแบบการลงคได 3 วธดงนคอ2.3.1 Nested Loop Join เปนวธการลงคขอมลโดย

จะตรวจสอบขอมลทละแถวในแตละตาราง กลาวคอ ออพตไมเซอรจะตรวจสอบขอมลในตารางดานนอก (Outer Table) กอน จากนนจงนำาขอมลแตละแถวมาตรวจสอบ

ในทกขอมลของตารางดานใน (Inner Table) ดงแสดงในรปท 5

2.3.2 Merge Join (Sort Merge Join) มการทำางานคลายแบบแรก แตตางกนทกอนเรมการทำางาน จะมการจดเรยงลำาดบขอมล (Sort) ในแตละตารางกอนทำาการลงค ดงรปท 6

ขอดคอจะชวยลดเวลาในการลงคตารางได เนองจากหากไมพบขอมลหรอเงอนไขในการลงคตารางแลว ระบบกจะหยดการทำางานในตารางนนๆ ทนท ดงรปท 6 ซงจะเหนวา Table 1 และ 2 มการจดเรยงลำาดบขอมลกอนทำาการลงคตาราง

2.3.3 Hash Join เปนการลงคตารางซงจะทำาผานตารางแฮช (Hash Table) ทระบบไดสรางขนชวคราว โดยขอมลในตารางแฮชจะประกอบดวยคยขอมลทใชลงคระหวางตาราง และทอยของดาตาบลอค (Data Block) ทใชเกบคาขอมลนน ซงวธนจะชวยใหตารางหลกเขาถงขอมลในตารางยอยไดเรวขน จากรปท 7 พบวามการสราง ตารางแฮชขนมาชวคราว เพอจดเกบคยคอลมนทใชลงคระหวางตารางเอาไว กอนใชคยในตารางแฮชเขาถงคา

รปท 5 การ Join ตารางแบบ Nested Loop รปท 7 การ Join ตารางแบบ Hash Join

Table 1 Table 2

Page 6: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

726

วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012

ขอมลทเกยวของตอไป แตในบางกรณออพตไมเซอรอาจจะตองตรวจสอบขอมลในตารางเดมดวย เพราะการสรางตารางแฮชนน อาจจะมคาขอมลทซำาหรอชนกน ดงนนจงเปนความยากและซบซอนมาก ทจะออกแบบอลกอรทม เพอสรางตารางแฮชทงายและทำางานไดอยางรวดเรว

3. วสด อปกรณและวธการวจย

ในการเตรยมสภาพแวดลอมการทำางานของ ออพตไมเซอรน จะใชดบเอมเอสออราเคลเวอรชน 11.1g (Release 1) และ SQL Developer เวอรชน 1.5.5 เขามาใชในการทดสอบ เนองจากออราเคลนนเปนซอฟตแวรจดการฐานขอมลทมความนาเชอถอ และมประสทธภาพการทำางานทด ดงจะเหนไดจากการสำารวจของสำานกขาวรอยเตอรในป 2010 ทระบวาเปนดบเอมเอสทมผใชงานทวโลกมากทสด [15] ในขณะทโปรแกรม SQL Developer ซงเปนเครองมอทมสวนตดตอกบผใชเปนแบบกราฟก (Graphic User Interface) ทชวยผใชจดการ หรอแกไขขอมลในฐานขอมล ทงยงมฟงกชนหรอบรการตางๆ ทชวยใหทำางานไดงายและสะดวกมากขน เชน สวนการจดการและเรยกดขอมลดาตาเบสออบเจค เชน ตาราง อนเดกซ รวมทงสวนการรนและแสดงผลคำาสง หรอสวนการสรางสครปตและโคดตางๆ เปนตน

โดยในการจดเตรยมสภาพแวดลอมสำาหรบทดสอบระบบนน จะแบงการทำางานออกเปน 4 ขนตอนหลก ดงแสดงในรปท 8

1. จดเตรยมดาตาเบสออบเจค เปนขนตอนการจดเตรยมตาราง และอนเดกซเพอใชทดสอบคำาสงเอสควแอล โดยจะใชตวอยางขอมลทตดตงมาพรอมกบออราเคล ของ Schema SCOTT, OE และ SH ซงเปนขอมลเกยวกบสวนพนกงาน แผนก ประวตการทำางาน การจดการสนคา ราคาสนคา และการสงซอสนคา ซงประกอบดวย 6 ตารางหลกคอ

● EMP2 (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) เกบขอมลทวไปของพนกงานจำานวน 1.83 ลานแถว

● DEPT2 (DEPTNO, DNAME, LOC) เกบ

ขอมลแผนกตางๆ ในองคกร จำานวน 1.04 ลานแถว● JOB_HISTORY(EMPID, JOB) เกบขอมล

ประวตการทำางานพนกงาน จำานวน 5 แสนแถว● COSTS (PROD_ID, TIME_ID, PROMO_ID,

CHANCEL_ID, UNIT_COST, UNIT_PRI) เกบขอมลราคาและรายการขนสงสนคา จำานวน 0.82 แสนแถว

● PRODUCTS(PROD_ID, PROD_NAME, PRO_DESC, SUP_ID, PROD_LIST_PRICE, …., PROD_TOT) เกบรายละเอยดสนคา จำานวน 0.74 แสนแถว

● ORDERS(ORD_ID, ORD_TOTAL, ORD_DATE, CUST_NAME) เกบขอมลรายการสงซอ จำานวน 1 ลานแถว

โดยกำาหนดใหมคยหลก (Primary Key) และคยนอก (Foreign Key) เพอลงคความสมพนธระหวางตาราง โดยแตละตารางจะถกสรางขนดวยคำาสงเพมขอมล (insert) โดยใชขอมลจากตารางเดมมารนเพมดวยคำาสง “insert into …” ลงในตารางดวยอตราสวนทเพมขนและกระจายคาอยางเทากน

2. ออกแบบคำาสง เปนการสรางคำาสงเอสควแอลในรปแบบและกรณตางๆ ทแตกตางกน โดยในการทดสอบน จะทดสอบเฉพาะในสวนคำาสง SELECT เทานน เพราะโครงสรางดงกลาวสามารถสรางโอเปอเรชนทซบซอนและ หลากหลายไดมากกวารปแบบ INSERT UPDATE หรอ DELETE เชน การสรางการเขาถงขอมลแบบมเงอนไข (WH-Clause) การจดเรยงขอมล (Sorting) การลงค

รปท 8 ขนตอนการทดสอบระบบ

Page 7: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

727

The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555

ขอมลระหวางตาราง การสราคำาสงสบคนยอย (Sub Query) หรอการใชงาน Aggregation Function เปนตน นอกจากน คำาสง SELECT ยงเกยวของกบการอานขอมลเพยงอยางเดยว สวนผลการทำางานในคำาสงอนๆ จะมรปแบบหรอปจจยอนรวมดวย เชน นโยบายการอานเขยนขอมล (Read/Write Policy) การตดตอกบดสก (I/O Operation) หรอการลางขอมลในบฟเฟอร (Flushing) เปนตน ซงผลจากขนตอนนจะไดคำาสงเอสควแอลในรปแบบตางๆ โดยถกกำาหนดขนตามรปแบบและประเดนทเกยวของ กบหลกการเพมประสทธภาพการทำางานของคำาสง เอสควแอล [7]

3. ประมวลผลคำาสง ในขนตอนนจะทำาการประมวลผลคำาสงเอสควแอลโดยใชรปแบบ “explain plan for sql statement” ซงผลจากการรนคำาสงดงกลาว จะทำาใหระบบสรางแผนการสบคนขนมา จากนนกจะทำาการตรวจสอบและแสดงขอมลในตารางดงกลาวดวยคำาสง “select * from table(dbms_xplan.display)”

4. สรปผล เปนขนตอนสดทาย โดยจะสรปและประเมนผลการทำางานทออพตไมเซอรใชในการวเคราะห และรนคำาสงเอสควแอลในขนตอนแรก

4. ผลการทดลองในการทดสอบประสทธภาพการทำางานของออพตไมเซอร

ทมตอคำาสงเอสควแอลนน มวตถประสงคเพอตรวจสอบวาเมอรนคำาสงเอสควแอลดวยรปแบบหรอวธลงคขอมลทแตกตางกนแลว ออพตไมเซอรจะสรางแผนการสบคนและมประสทธภาพการทำางานทตางกนหรอไม จากนนจงจะเปรยบเทยบและวเคราะหผลทเกดขน ซงจะแบงการทดสอบออกเปน 2 ดานดงนคอ

4.1 การทดสอบการเขาถงขอมลการทดสอบน มวตถประสงคเพอศกษาวาออพตไมเซอร

จะมปจจยในการพจารณาเลอกรปแบบการเขาถง ขอมลตางๆ อยางไร และรปแบบการเขาถงขอมลท แตกตางกนนน จะมประสทธภาพการทำางานตางกนอยางไร โดยจะแบงกรณทดสอบออกเปน 2 ดานคอแบบระบและ

ไมระบเงอนไขในคำาสง SELECT ดงนคอ [7], [11]4.1.1 การคนหาขอมลทงหมด โดยทดสอบเพอ

คนหาวาออพตไมเซอรจะเลอกใชการเขาถงขอมลรป แบบใด เมอมการรนคำาสงเขาถงขอมลทงหมดในตาราง ดวย “select * from table_name” ซงผลลพธจากการทดสอบ สามารถสรปผลในตาราง 1

ตารางท 1 เปรยบเทยบผลลพธทเกดขนใน Query Plan เมอมการรนคำาสง “select * from emp2”

จำานวน ขอมล (แถว)

รปแบบการเขาถงขอมลทออพตไมเซอร

เลอกใช

Cost (%CPU)

Time (ms)

1,830,000 Table Access Full 1 00:00:37

28,000 Table Access Full 0 00:00:01

จากตารางท 1 พบวาในตารางขนาดใหญแบบแรก ซงมจำานวนขอมล 1.83 ลานแถวนน ออพตไมเซอรจะเลอกการเขาถงขอมลแบบ Full Table Scan ซงใช Cost และ Time ในการประมวลผลไปทงสน 1% และ 37 ms ตามลำาดบ ในขณะทตารางขนาดเลกแบบท 2 ซงมการลดปรมาณขอมลลงอยางเทากนใหเหลอเพยง 28,000 แถว พบวาออพตไมเซอรยงคงเลอกการเขาถงขอมลรปแบบเดม นนคอ Full Table Scan แตม Cost และ Time ทลดลงคอเพยง 1 ms

ดงนนจงสรปไดวาการคนหาขอมลทงหมดในตารางซงมปรมาณทมากหรอนอย จะไมมผลตอการเลอกรปแบบ การเขาถงขอมลของออพตไมเซอร เนองจากระบบจะเลอกแบบ Full Table Scan เพราะออพตไมเซอรสามารถเขาถงและอานขอมลในดาตาบลอคไดงายและสะดวกกวาวธการอนๆ [7], [13], [14]

4.1.2 การคนหาขอมลโดยใชเงอนไข ซงมวตถประสงคเพอทดสอบวาหากมการเขาถงขอมลเพยงบางสวนหรอเพมสวนการกำาหนดเงอนไขในคำาสงเอสควแอลแลวนน ออพตไมเซอรจะมรปแบบการเขาถงขอมลในระบบอยางไร โดยเบองตนจะทำาการสรางคำาสงเอสควแอล โดยทดสอบดวยตาราง EMP2 ดงคำาสงท (2)

Page 8: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

728

วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012

(2)

จากนนเพมการทดสอบคำาสงท (2) ดวยการสรางอนเดกซ (Index) บนคอลมน DEPTNO เพอรองรบการคนหาโดยผานเงอนไข WH-Clause DEPTNO ในตาราง EMP2 ซงสามารถสรปผลการรนคำาสงและผลลพธใน Query Plan ดงตารางท 2

ตารางท 2 เปรยบเทยบผลลพธทเกดขนใน Query Plan เมอมการรนคำาสงท 2 แบบใชและไมใช อนเดกซ

รปแบบ คำาสงท 2ไมใช Index

คำาสงท 2ใช Index บน

คอลมน Deptnoรปแบบการเขาถงขอมลทออพตไมเซอรเลอกใช

Table Access Full

Index Range Scan

Cost (%CPU) 2 0Time (ms) 00:00:37 00:00:01

โดยสรปคำาสงในการคนหาขอมลทงแบบทกำาหนดและไมกำาหนดเงอนไขนน ออพตไมเซอรจะเลอกใชการเขาถงแบบ Full Table Scan กอน แตหากตารางนนมการกำาหนดอนเดกซบนคอลมนทมเงอนไข WH-Cause รวมดวย ออพตไมเซอรจะใชรปแบบการเขาถงแบบ Index Lookup Scan แทน

4.2 ดานการลงคขอมลระหวางตารางเปนการวเคราะหวารปแบบการลงคขอมลระหวาง

ตารางนน จะมผลตอการทำางานของออพตไมเซอรอยางไร โดยการทดสอบนน จะใชคำาสงลงคตารางระหวาง EMP2 และ DEPT2 ผานคยนอก DEPTNO ดงแสดงในคำาสงรปแบบ (3)

(3)

นอกจากนยงเพมการทดสอบลงคขอมลระหวางตารางของออพตไมเซอรในแบบตางๆ เชน Nested Loop, Merge Join และ Hash Join ดวยคำาสง “HINT” ซงเปน รปแบบทใหผใชแนะนำาการประมวลผลคำาสงสบคนแก ออพตไมเซอรได ดวยการระบคยเวรดดงกลาว โดยเขยนตามหลงคำาสง SELECT และใชอกขระ /*+ แลวตามดวย คำาแนะนำา เชน USE_NL, USE_MERGE หรอ USE_HASH และปดดายดวยอกขระ */ ตามลำาดบ ดงแสดงในตวอยาง (4) เชน การใช HINT “USE_NL” เพอระบใหออพตไมเซอรลงค ตาราง EMP2 และ DEPT2 แบบ Nested Loop หรอใช HINT “USE_HASH (table1, table2) เพอแนะนำาให ออพตไมเซอรลงคขอมลดวยตารางแบบแฮช เปนตน

(4)

ผลการทดสอบในตารางท 3 ซงลงคตารางทง 3 รปแบบดวยคยเวรด HINT นน พบวาออพตไมเซอรจะใชเวลาในการลงคตารางแบบ Hash Join นอยทสด ในขณะท รปแบบ Nested Loop จะใชเวลามากทสด

ตารางท 3 เปรยบเทยบผลลพธใน Query Plan โดยลงคตารางแบบ Nested Loop, Merge Join และ Hash Join

รปแบบรปแบบการลงคตารางของออพตไมเซอร

NestedLoop

MergeJoin

HashJoin

รปแบบ การลงคตาราง

Nested Loop

Merge Join และ Sort Join

Hash Join

การใชงาน CPU (%)

2 100 100

Time (ms) 999:59:59 07:56:39 07:52:38

ในทางกลบกน หากมการเพมโอเปอรชนในการจดเรยงขอมลดวยคำาสง “order by deptno” ในคำาสง (4) พบวาการลงคแบบ Merge Join จะใหผลการทำางานทเรว

Page 9: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

729

The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555

ตารางท 4 เปรยบเทยบผลลพธใน Query Plan โดยลงค ตารางแบบ Nested Loop, Merge Join และ Hash Join และใชเงอนไขจดเรยงขอมล “order by deptno”

รปแบบรปแบบการลงคตารางของออพตไมเซอร

Nested Loop Merge Join

Hash Join

รปแบบการลงคตาราง(เรยงตามลำาดบการทำางาน)

Nested Loop และ Index Scan

Merge Join และ Sort Join

Sort Orderและ

Hash Join

CPU Cost หนวย (%CPU)

2 100 100

Time (ms) 999:59:59 07:56:39 999:59:59

ตารางท 6 แสดงคาการใชงาน %CPU ทคำานวณจากคาของ I/O Operation และ CPU Cost ทใชลงคตารางเมอเทยบกบจำานวนแถวขอมลทเพมมากขน

ขนาดขอมล(แถว)

รอยละของการใชงาน CPU (100%)Nested Loop

Merge Join

Hash Join

1,000 0.0001 0.0001 0.000110,000 0.0027 0.0010 0.0003100,000 2.16 3.57 0.82500,000 78.53 3.82 2.47

1,000,000 96.41 5.06 2.84

นอกจากน ยงเพมการทดสอบเพอหาความสมพนธในการลงคขอมลระหวางตารางในรปแบบตางๆ กบปรมาณขอมลทแตกตางกนดวย เพอวเคราะหถงประสทธภาพการทำางานของออพตไมเซอร ทงในแงการเปรยบเทยบดานเวลา และการเปรยบเทยบดานทรพยากรทออพตไมเซอรใชประมวลผลคำาสงในระบบ ดงสรปในตารางท 5-6

ตารางท 5 แสดงเวลา (Milliseconds) ทใชในการประมวล ผลลงคตารางเมอเทยบกบแถวขอมลทเพมขน

ขนาดขอมล (แถว)

เวลาทใชในการประมวลผล (ms)Nested Loop Merge

JoinHash Join

1,000 7.50 12.32 7.5010,000 72.40 24 16100,000 10009 377.33 240.01500,000 10,099.10 560 310

1,000,000 10,256.37 852.39 397.98

และใชทรพยากรในระบบทนอยทสด ในขณะทออพตไมเซอร จะหลกเลยงการลงคขอมลระหวางตารางในแบบ Hash Join และ Nested Loop เนองจากทงสองรปแบบนนจะใชเวลา และทรพยากรในระบบสวนหนงเพอจดเรยงขอมลในตารางกอนซงมอยเปนจำานวนมากดงสรปผลในตารางท 4

ซงผลการทดสอบในตาราง 5-6 พบวาเมอปรมาณขอมลเพมมากขน การทำางานแบบ Nested Loop จะใชเวลาและทรพยากรมากทสด ในขณะทแบบ Merge Join และ Hash Join ใชเวลาและทรพยากรโดยเฉลยทนอยและไมแตกตางกน

4.3 การทดสอบรปแบบคำาสงสบคนตางๆ

การทดสอบรปแบบคำาสงสบคนตางๆ [7], [14], [16] ในการเพมประสทธภาพการประมวลผลคำาสงเอสควแอลนน นอกจากรปแบบการเขาถงขอมล การลงค ตารางแลว สวนหนงยงขนอยกบโครงสรางและการออกแบบคำาสงใหเหมาะสมดวย และแมวาหนาทดงกลาวจะเปนของผใชโดยตรง แตวาออพตไมเซอรกมเทคนคหรอเงอนไขเบองตนในการพจารณาอย ดงนนหากผใชทราบถงกลไกดงกลาว กจะชวยใหสามารถปรบแตงคำาสง ไดเหมาะสม และหลกเลยงรปแบบทอาจจะกอใหเกดโหลดภายในออพตไมเซอรลงได โดยขอแยกเปนกรณตางๆ ทพบบอยหรอเปนความผดทวไปดงนคอ

4.3.1 การใชคยหลกรวมกบฟงกชน โดยทวไปการกำาหนดคอลมนใดๆ ใหเปนคยหลกในตารางนน ออพตไมเซอร จะสรางอนเดกซสำาหรบคอลมนนนใหโดยอตโนมตเพอการสบคนทเรวขน แตหากผใชมการเปลยนชนดขอมลของคยหลกดวยฟงกชนแปลงขอมลใดๆ จะสงผลให ออพตไมเซอรไมสามารถใชอนเดกซในคอลมนไดตามปกต เพราะชนดขอมลในอนเดกซและคาในคำาสงไม

Page 10: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

730

วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012

(Compile Error) ใดๆ เมอรนคำาสง แตการทำางานดงกลาว จะทำาใหออพตไมเซอรใชเวลาตรวจสอบและแปลง ชนดขอมลทมากขน จากคำาสง (7) แทนการเปรยบเทยบชนดขอมลทไมตรงกนคอชนดสตรง (order_id_char) และตวเลข (1205) ในขณะทคำาสง (8) เปนการกำาหนดเงอนไขเพอเปรยบเทยบชนดขอมลทตรงและสมพนธกน

(7)

(8)

ตารางท 8 เปรยบเทยบผลลพธทเกดขนใน Query Plan เมอมการกำาหนดชนดขอมลในคำาสง (7) และ (8)

รปแบบ คำาสงท (7)ระบเงอนไขเพอเปรยบเทยบ

ขอมลทไมตรงกน

คำาสงท (8)ระบเงอนไขเพอ

เปรยบเทยบขอมลทตรงกน

การทำางานของออพตไมเซอร

Full Table Scan Index Scan

รอยละการใชงาน CPU (%)

1 0

Time (ms) 00:01:47 00:00:01

จากตารางท 8 กำาหนดใหคำาสงท (7) เปรยบเทยบ ชนดขอมลตางประเภทกนคอ varchar2 และ number ซงในกรณนออพตไมเซอรจะแปลงชนดขอมลในคอลมนนใหเปนตวเลขโดยอตโนมต ทำาใหผใชสามารถรน คำาสงดงกลาวไดตามปกตโดยไมเกดขอผดพลาดใดๆ แตการคนหาทเกดขนนนจะทำาใหออพตไมเซอร ไมสามารถคนหาโดยใชอนเดกซได เนองจากคยคอลมนไดถกเปลยนชนดขอมลจาก varchar2 ใหเปน number ดวยฟงกชน TO_NUMBER แลว ซงทำาใหออพตไมเซอรจะเขาถงขอมลแบบสแกนทงหมด และใชเวลาหรอทรพยากรทมากตามลำาดบดวย ในขณะทหากเปรยบเทยบบนชนดขอมลทสมพนธกนดงคำาสงท (8)

สมพนธกน โดยกำาหนดคำาสง (5) แทนการใชงานฟงกชนแปลงขอมลรวมกบคยหลก empno และ คำาสง (6) แทนตวอยางการใชงานคยหลกแบบปกต (ไมใชรวมกบฟงกชน) ตามลำาดบ

(5)

(6)

ตารางท 7 เปรยบเทยบผลลพธทเกดขนใน Query Plan ของการใชฟงกชนในคยหลกของคำาสง (5) และ (6)

รปแบบคำาสงท (5)ใชฟงกชน

ในคยหลก

คำาสงท (6)ไมใชฟงกชน

ในคยหลก

การทำางานของออพตไมเซอร

Full Table Scan Index Scan

รอยละการใชงาน CPU (%) 2 2

Time (ms) 00:00:57 00:00:21

จากตารางท 7 คำาสง (5) มการใชฟงกชนแปลง ชนดขอมลใน empno ซงเปนคยหลก ซงผลดงกลาวทำาให ออพตไมเซอรจะคนหาขอมลแบบ Full Table Scan โดยทไมใชอนเดกซในคยหลก เพราะชนดขอมลใน empno ซงเปนอนเดกซไดถกเปลยนคาไป เนองจากมการใชฟงกชนแปลงขอมล ซงจะทำาใหเวลาทใชนนมากกวาการเขาถงขอมลดวยวธการใช Index Scan ในคำาสง (6)

4.3.2 การเปรยบเทยบชนดขอมลทไมสอดคลองกน เนองจากในการกำาหนดหรอเปรยบเทยบเงอนไขทมชนด ขอมลไมตรงกนนน ออพตไมเซอรจะแปลงขอมลใหม ชนดทตรงและสมพนธกนใหกบผใชเองโดยอตโนมต (Implicit Converting) โดยทไมแจงขอผดพลาด

Page 11: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

731

The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555

จะทำาใหออพตไมเซอรไมตองใชเวลาแปลงขอมล และยงเขาถงขอมลดวยวธอนเดกซไดโดยตรง ซงกจะทำาใหใชเวลาและทรพยากรในระบบนอยลงไปดวย

ดงนนจงสรปไดวาผใชควรสรางเงอนไขซงมชนด ขอมลทสมพนธกนในรปแบบ Explicit Function มากกวา การสรางเงอนไขในแบบ Implicit Functions ทตองรอใหออพตไมเซอรใชเวลาและทรพยากรสวนหนงตรวจสอบและแปลงขอมลใหกอนประมวลผล เพราะหากปรมาณขอมลมจำานวนมาก กจะทำาใหระบบชา หรอหากคอลมนนนทำาหนาทเปนคยหลกหรอเปนอนเดกซในตาราง กจะทำาใหคอลมนนนไมสามารถเขาถงขอมลดวยวธ Index Scan ไดตามปกต ซงกจะสงผลตอเวลาและทรพยากรทตองใชมากขนตามลำาดบ

4.3.3 การทำางานกบประโยคสบคนยอยแบบวนซำาทกแถว (Correlated Sub Query) ซงรปแบบดงกลาว จะทำาใหออพตไมเซอรตองประมวลผลคำาสงสบคนยอย (Sub Query) ในทกรอบหรอทกแถวขอมลในตารางนน ซงเปนการสนเปลองเวลาและทรพยากรระบบเปน อยางมาก

โดยกำาหนดใหคำาสง (9) แทน Correlated Sub Query ซงพบวาใน WH-Clause มคำาสงสบคนยอยซอนอย ในขณะทคำาสง (10) กำาหนดคลายกน แตเปลยนลำาดบของคำาสงสบคนยอยไปทตำาแหนง FROM จากนน ตรวจสอบผลการสรางออพตไมเซอร

(9)

(10)

จากรปท 9 พบวาผลการสรางแผนการสบคน โดยรนดวยคำาสง (9) จะมการใชเวลาและทรพยากรทมากกวา (10) โดยจะเรมทำางานท Id 6, 5, 3, 4, 2 และ 1 ซงทำาใหออพตไมเซอรจะรนคำาสงสบคนยอยเพอหา Aggregation Functions ในทกรอบของการประมวลผลแบบสแกนทงหมด ซงกจะสงผลใหการใชทรพยากรใน Id 3-4 มจำานวนทมากกวาปกต และสงผลโดยรวมตอการทำางานทงหมดซงมคามากตามไปดวย

ในขณะทรปท 10 จะเรมการทำางานท Id 6, 5 และ 4 ตามลำาดบ ซงการรนดงกลาวเปนการหา Aggregation Function “AVG” กอน เพราะมการสแกนขอมลทงหมดและใชฟงกชน Group By ใน Id 4 เพอคำานวณผลลพธ จากนนจงเกบคาไวใน View (Id 3) กอนทำาการสแกนขอมล ทงหมดใน Id 7 ซงจะทำาใหมการรนคำาสง Aggregation Functions เพยงครงเดยว เพราะออพตไมเซอรจะใช View

รปท 9 Query Plan เมอรนคำาสง Correlated Sub Query

รปท 10 Query Plan เมอปรบคำาสงแบบ Non-Correlated

Page 12: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

732

วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012

เกบผลลพธของฟงกชนในการตรวจสอบและคนหาขอมลทสอดคลองกบเงอนไขตามทกำาหนดในคำาสงตอไป

ดงนนผใชควรสรางคำาสงประเภท Non-Correlated Query ทใชหลกการจดเรยงลำาดบโอเปอเรชน และรปแบบคำาสงเขามาชวยลดจำานวนการประมวลผลขอมลของคำาสงสบคนไดดกวาคำาสงประเภท Correlated Query

4.3.4 การใช UNION และ UNION ALL โดยการใชรปแบบ Union นนจะใหผลการทำางานทชากวาแบบ Union All เนองจากคำาสง Union ออพตไมเซอรจะตดคยทมชนดขอมลและมคณสมบตรวมกนออกกอน พรอมจดเรยงลำาดบขอมลใหดวย ซงการทำางานดงกลาว จะทำาใหระบบประมวลผลไดชาลง

(11)

(12)

ตารางท 9 เปรยบเทยบผลลพธใน Query Plan ของการใช UNION และ UNION ALL ในคำาสง (11) - (12)

รปแบบคำาสงท (11)ใช UNION

คำาสงท (12)ใช UNION ALL

การทำางานของออพตไมเซอร

Sort และUNION ALL

UNION ALL

รอยละการใชงาน CPU (%) 34 1

Time (ms) 00:02:22 00:00:49

จากตารางท 9 ในคำาสงท 11 ซงใชรปแบบ UNION พบวาออพตไมเซอรใชเวลาและทรพยากรสวนหนงในการจดเรยง (Sort) ขอมลดวย ในขณะทการใชงานรปแบบ UNION ALL ในคำาสง 12 นน จะไมพบโอเปอเรชน ดงกลาวในแผนการสบคนเลย ซงกจะชวยลดเวลาใน การประมวลผลคำาสงลงได

4.3.5 การใช CASE เพอควบคมการทำางาน ขอดคอชวยลดจำานวนการประมวลผลในหลายๆ คำาสงได โดยใชการรวมคำาสงและรปแบบเงอนไขทสมพนธกนไวในโครงสรางเดยวกนดวยตวดำาเนนการ CASE ซงจะชวยใหการประมวลผลหลายคำาสงหรอหลายเงอนไขทำาไดในคราวเดยวกน ทงยงชวยลดเวลาการตดตอระบบและการใชงานทรพยากรลงดวย

(13)

จากรปท 11 พบวาผลการรนประโยคเงอนไขตางๆ ดวยตวดำาเนนการ CASE นน สามารถประมวลผลขอมลไดในคราวเดยวกน ในขณะทหากรนคำาสงแยกกนในแตละ CASE นน จะใชเวลาทำางานทมากกวา เนองจากตองรนคำาสง (ครง) ตามกรณทกำาหนดในเงอนไขทงหมด (ประมาณ 37 ms * 3 กรณ)

5. อภปรายผลและสรป

จากผลการทดสอบ สามารถสรปผลประเมนประสทธภาพการทำางานของออพตไมเซอรทมตอคำาสงเอสควแอลไดดงนคอ

1. ออพตไมเซอรจะเขาถงขอมลทงหมดในรปแบบ

รปท 11 Query Plan ในการใช CASE

Page 13: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

733

The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555

Full Table Scan เนองจากจะใชเวลาอานบลอกขอมลในดสกเพยงครงเดยว ซงชวยลดการตดตอกบ I/O Disk ได ในขณะทหากมการระบเงอนไขในคำาสง WH-Clause นน ออพตไมเซอรจะคนหาดวยวธ Index Scan (กรณทม อนเดกซในคอลมน) ซงจะใชเวลาทรวดเรวกวาแบบ Full Table Scan (กรณทไมมอนเดกซในคอลมน) แตอยางไรกตามการสรางอนเดกซบนคอลมนใดๆ นน ควรคำานงถงปจจยแวดลอมอนๆ รวมดวย เชน ความถในการเขาถง ขอมล ประเภทการใชงาน หรอปรมาณขอมลในระบบ เนองจากหากมโอเปอเรชนเพม (Insert) ลบ (Delete) หรอแกไขขอมล (Update) เกดขน ระบบจะตองใชเวลาและทรพยากรสวนหนงเพอปรบปรงขอมลในอนเดกซนนดวย [14]

2. ในกรณทมการสบคนขอมลในตารางขนาดใหญ ผใชควรกำาหนดใหออพตไมเซอรลงคขอมลดวยการกำาหนดออพชน Hash Join ผานคำาสง /* Hint “use_hash” */ เพราะจะชวยใหระบบประมวลผลรวดเรวยงขน เนองจากการลงคตารางแบบ Hash Join นนจะมประสทธภาพการทำางานทดกวาแบบอนๆ เนองจากมการใชตารางแฮชเขามาชวยในการหาขอมลรวมดวย

3. การเพมประสทธภาพการประมวลผลคำาสง เอสควแอลนน ยงขนอยกบโครงสรางและรปแบบคำาสงดวย เชน ควรหลกเลยงการใชคยหลกรวมกบฟงกชน เพราะจะทำาใหการคนหาขอมลทำาไดชากวาปกต เนองจาก ออพตไมเซอรจะคนหาดวยวธ Full Table Scan แทนการคนหาโดยใชอนเดกซในแบบ Index Scan หรอผใชควรหลกเลยงคำาสงทมการใชงานแบบ Correlated Sub Query UNION และ Implicit Casting เพราะจะทำาใหออพตไมเซอรใชทรพยากรและเวลาประมวลผลนานขน

4. ในอนาคตอาจมการเปรยบเทยบการทำางานของ ออพตไมเซอรในดบเอมเอสชนดตางๆ ซงจะชวยให ผใชทราบถงประสทธภาพหรอขอจำากดของแตละระบบได ซงกจะเปนประโยชนในแงการเลอกใชดบเอมเอสใหเหมาะสมตอไป หรอจะนำาหลกการเพมประสทธภาพ การทำางานของออพตไมเซอรทมตอคำาสงเอสควแอลแบบซเลกชน มาตอยอดและนำาเสนอกรอบแนวคดเพอพฒนา

ระบบแนะนำาคำาสงเอสควแอลทเหมาะสมแบบอตโนมต ดงทระบในงานวจย [5], [16]

เอกสารอางอง

[1] Oracle Corporation (2007). “Oracle Database Performance Tuning Guide, 11g Release 1 (11.1)” [Online]. Available: http://download.oracle.com/ docs/cd/B28359_01/server.111/b28275/toc.htm

[2] R. Mukkamala and R. Lin, “Improving Database Performance through Query Standardization” in Proceedings. Energy and Information Technologies in the Southeast, vol. 3 pp. 1321-1325, 1989.

[3] V.K.S. Nerella et al., “Exploring Query Optimization in Programming Codes by Reducing Run-Time Execution” in Computer Software and Applications Conference, pp. 407-412. 2010.

[4] P. Belknap et at., “Self-Tuning for SQL Performance in Oracle DB 11g, ” The 25th International Conference on Data Engineering, pp. 1321-1324, 2009.

[5] Li Dandan et al., “SQL Query Optimization Methods of Relational Database System,” in the 2nd International Conference on Computer Engineering and Applications., vol.1 pp. 557-560, 2010.

[6] P. Khaitan et al., “Improved query plans for unnesting nested SQL queries,” in The 9th International Conference on Computer Science and its Applications, pp.1-6. 2009.

[7] M. Jarke and J. Koch, “Query Optimization in DB,” Computing Survey, vol. 16, no.3, pp 111–152, June 1984.

[8] A. Silberschatz, H.F. Korth and S. Sudarshan: Database System Concept, The McGraw Hill Companies Inc. 2006, pp. 569-602.

[9] Oracle Corporation (2010). The Query Optimizer. [Online]. Available: http://download.oracle.

Page 14: การวิเคราะห์แผนการสืบค้น ... for ThaiScience/Article/62... · 2013-10-29 · การปรับปรุงการทำางานของฐานข้อมูล

734

วารสารวชาการพระจอมเกลาพระนครเหนอ ปท 22 ฉบบท 3 ก.ย. - ธ.ค. 2555The Journal o f KMUTNB. , Vol . 22, No. 3 , Sep. - Dec. 2012

com/docs/ cd/B28359_01/server.111/b28274 /optimops.htm.

[10] Oracle Corporation (2010). Introduction to the Optimizer. [Online]. Available: http://docs.oracle.com/cd/B10550_01/server.920/a96533 /optimops.htm

[11] Richard Niemiec, Oracle Database 10g Performance Tuning Tips & Techniques, The McGraw Hill Companies Inc. 2007, pp. 254-250.

[12] B. Peasland, Understanding Oracle cost-based optimizer (CBO) and ruled-based optimizer (RBO), SGT, Inc, 2008.

[13] Oracle Corporation (2010). Using Explain Plan.

[Online]. Available: http://download.oracle. com/docs/ cd/B10500_01/server.920/a96533/ex_plan.htm.

[14] K. Dias et al., “Automatic Performance Diagnosis and Tuning in Oracle”, in the Proceedings of the CIDR Conference, 2005.

[15] Reuter (2010). Oracle Is #1 in the RDBMS Market for 2010 [Online]. Available: http://in.reuters.com/article/ 2011/04/07/idUS174473+07 -Apr-2011+MW20110407

[16] B. Dageville et al., “Automatic SQL Tuning in Oracle 10g,” in the Proceeding of the 30th VLDB, Canada, pp. 1098–1109, 2004.