การเพิ่มประสิทธิภาพแบบสอบถามใน Oracle
เผยแพร่แล้ว: 2023-07-10การเพิ่มประสิทธิภาพการค้นหาเป็นกระบวนการที่ซับซ้อนและสร้างสรรค์ซึ่งขาดสูตรสำเร็จ แม้ว่าจะอาศัยหลักการพื้นฐาน แต่ก็มักไม่มีวิธีแก้ปัญหาที่เหมาะกับทุกขนาด ดังนั้น การประเมินความจำเป็นของการเพิ่มประสิทธิภาพการค้นหาก่อนที่จะดำดิ่งลงไปในงานจึงมีความสำคัญ มิฉะนั้น เวลาที่ลงทุนไปอาจเกินดุลผลกระทบเพียงเล็กน้อยของการเพิ่มประสิทธิภาพ โฟกัสหลักควรอยู่ที่การเพิ่มประสิทธิภาพการสืบค้นช้าซึ่งดำเนินการบ่อย โดยเฉพาะอย่างยิ่งในช่วงที่มีภาระงานฐานข้อมูลสูง การทำเช่นนี้จะลดภาระโดยรวมของระบบ ทำให้ประสิทธิภาพการทำงานดีขึ้น
การเพิ่มประสิทธิภาพการค้นหาใน Oracle เป็นกระบวนการปรับปรุงประสิทธิภาพและประสิทธิภาพของการค้นหาฐานข้อมูล เมื่อคุณเรียกใช้คิวรีในระบบจัดการฐานข้อมูล (DBMS) DBMS จะกำหนดวิธีที่มีประสิทธิภาพที่สุดในการดึงและจัดการข้อมูลตามข้อกำหนดของคิวรี การเพิ่มประสิทธิภาพแบบสอบถามช่วยลดเวลาดำเนินการแบบสอบถามและการใช้ทรัพยากรให้น้อยที่สุดในขณะที่ส่งชุดผลลัพธ์ที่ต้องการ
กระบวนการเพิ่มประสิทธิภาพการสืบค้นเกี่ยวข้องกับหลายขั้นตอน ได้แก่:
- การแยกวิเคราะห์และการวิเคราะห์ความหมาย: DBMS แยกวิเคราะห์แบบสอบถามและดำเนินการวิเคราะห์ความหมายเพื่อให้แน่ใจว่าแบบสอบถามถูกต้องตามวากยสัมพันธ์และอ้างอิงไปยังวัตถุฐานข้อมูลที่ถูกต้อง
- การประมาณค่าใช้จ่าย: เครื่องมือเพิ่มประสิทธิภาพจะประเมินค่าใช้จ่ายในการดำเนินการตามแผนการดำเนินการต่างๆ สำหรับแบบสอบถาม การประมาณค่าใช้จ่ายจะพิจารณาปัจจัยต่างๆ เช่น จำนวนการดำเนินการ I/O การใช้งาน CPU และการสื่อสารผ่านเครือข่าย
- การสร้างแผน: เครื่องมือเพิ่มประสิทธิภาพจะสำรวจแผนการดำเนินการต่างๆ และสร้างชุดแผนที่เป็นไปได้ตามการประมาณการต้นทุน แผนเหล่านี้แสดงถึงวิธีต่างๆ ที่สามารถดำเนินการค้นหาได้
- การเลือกแผน: เครื่องมือเพิ่มประสิทธิภาพจะเปรียบเทียบต้นทุนโดยประมาณของแผนที่สร้างขึ้นและเลือกแผนที่มีค่าใช้จ่ายต่ำที่สุด แผนการที่เลือกคือแผนการที่คาดว่าจะดำเนินการค้นหาได้อย่างมีประสิทธิภาพมากที่สุด
- การดำเนินการตามแผน: DBMS ดำเนินการตามแผนการดำเนินการที่เลือกเพื่อดึงและประมวลผลข้อมูลที่ต้องการโดยแบบสอบถาม
เทคนิคการเพิ่มประสิทธิภาพการค้นหาอาจแตกต่างกันไปขึ้นอยู่กับ DBMS เฉพาะ เทคนิคการเพิ่มประสิทธิภาพทั่วไปประกอบด้วย:
- การใช้ดัชนี: เครื่องมือเพิ่มประสิทธิภาพกำหนดการใช้ดัชนีอย่างมีประสิทธิภาพสูงสุดเพื่อลดจำนวนการอ่านดิสก์และปรับปรุงประสิทธิภาพการดึงข้อมูล
- การเพิ่มประสิทธิภาพการรวม: เครื่องมือเพิ่มประสิทธิภาพจะตัดสินใจลำดับการรวมและวิธีการรวมที่เหมาะสมที่สุด (เช่น การรวมลูปแบบซ้อน การรวมแฮช การรวมการรวม) เพื่อลดต้นทุนการคำนวณในการรวมหลายตาราง
- Predicate Pushdown: เครื่องมือเพิ่มประสิทธิภาพผลักดันเงื่อนไขการกรองให้ใกล้เคียงกับแหล่งข้อมูลมากที่สุดเท่าที่จะเป็นไปได้ โดยลดปริมาณข้อมูลที่จำเป็นต้องประมวลผล
- การดำเนินการแบบขนาน: ในบางกรณี เครื่องมือเพิ่มประสิทธิภาพอาจเลือกที่จะดำเนินการบางส่วนของแบบสอบถามแบบขนาน โดยใช้แกน CPU หลายแกนหรือการประมวลผลแบบกระจายเพื่อเพิ่มความเร็วในการดำเนินการแบบสอบถาม
- การรวบรวมสถิติ: เครื่องมือเพิ่มประสิทธิภาพอาศัยข้อมูลทางสถิติที่ถูกต้องเกี่ยวกับข้อมูลเพื่อทำการตัดสินใจอย่างชาญฉลาด การอัปเดตและการรักษาสถิติเป็นประจำสามารถช่วยปรับปรุงการเพิ่มประสิทธิภาพการค้นหาได้
การเพิ่มประสิทธิภาพการสืบค้นอย่างมีประสิทธิภาพสามารถปรับปรุงประสิทธิภาพการทำงานของระบบฐานข้อมูลได้อย่างมาก โดยเฉพาะอย่างยิ่งสำหรับการสืบค้นที่ซับซ้อนหรือชุดข้อมูลขนาดใหญ่ จำเป็นต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับสคีมาฐานข้อมูล การกระจายข้อมูล และรูปแบบการสืบค้น
วิธีเพิ่มประสิทธิภาพการสืบค้น SQL ใน Oracle
การเพิ่มประสิทธิภาพการสืบค้น SQL ใน Oracle เกี่ยวข้องกับการผสมผสานระหว่างการทำความเข้าใจแผนดำเนินการการสืบค้น การวิเคราะห์ประสิทธิภาพการสืบค้น และการใช้เทคนิคการเพิ่มประสิทธิภาพที่เหมาะสม ต่อไปนี้เป็นขั้นตอนบางส่วนที่คุณสามารถปฏิบัติตามเพื่อเพิ่มประสิทธิภาพการสืบค้น SQL ใน Oracle:
- วิเคราะห์แผนดำเนินการคิวรี: ขั้นตอนแรกคือการทำความเข้าใจว่า Oracle ดำเนินการคิวรีอย่างไร ใช้คำสั่ง EXPLAIN PLAN หรือเครื่องมือ SQL Developer เพื่อรับแผนดำเนินการคิวรี แผนการดำเนินการแสดงวิธีที่ Oracle เข้าถึงตาราง รวมตาราง ใช้ตัวกรอง และดำเนินการอื่นๆ วิเคราะห์แผนเพื่อระบุปัญหาคอขวดหรือจุดที่ต้องปรับปรุง
- ตรวจสอบให้แน่ใจว่าดัชนีได้รับการปรับให้เหมาะสม: ดัชนีมีบทบาทสำคัญในประสิทธิภาพการค้นหา ตรวจสอบให้แน่ใจว่าสร้างดัชนีที่เหมาะสมในคอลัมน์ที่ใช้ในคำสั่ง WHERE, JOIN และ ORDER BY ของเคียวรี พิจารณาใช้ดัชนีผสมสำหรับหลายคอลัมน์และวิเคราะห์การใช้ดัชนีโดยใช้มุมมอง INDEX_STATS หากจำเป็น ให้สร้างหรือแก้ไขดัชนีให้ตรงกับรูปแบบการเข้าถึงแบบสอบถาม
- ใช้ตัวแปรผูกและหลีกเลี่ยงค่าตามตัวอักษร: การใช้ตัวแปรผูกในแบบสอบถาม SQL ช่วยปรับปรุงประสิทธิภาพโดยเปิดใช้งานแผนการสืบค้นซ้ำ ตัวแปรผูกช่วยให้ Oracle แยกวิเคราะห์และดำเนินการค้นหาได้อย่างมีประสิทธิภาพมากขึ้น หลีกเลี่ยงการใช้ค่าตามตัวอักษรในการสืบค้น โดยเฉพาะอย่างยิ่งเมื่อเรียกใช้งานหลายครั้ง เนื่องจากอาจนำไปสู่การไม่มีประสิทธิภาพ การแยกวิเคราะห์อย่างหนัก และแผนการดำเนินการที่ไม่เหมาะสม
- ปรับการดำเนินการรวมให้เหมาะสม: สำหรับแบบสอบถามที่เกี่ยวข้องกับหลายตาราง ให้เพิ่มประสิทธิภาพการดำเนินการรวมโดยตรวจสอบให้แน่ใจว่าใช้วิธีการรวมที่เหมาะสม ประเมินว่าการรวมลูปซ้อน การรวมแฮช หรือการรวมแบบผสานเหมาะสมที่สุดสำหรับแบบสอบถาม คุณสามารถใช้คำใบ้ (เช่น /*+ USE_HASH */) เพื่อมีอิทธิพลต่อการเลือกวิธีการรวมหากจำเป็น
- ใช้วิธีการเข้าถึงดัชนีที่เหมาะสม: Oracle นำเสนอวิธีการเข้าถึงดัชนีต่างๆ เช่น การสแกนดัชนีแบบเต็ม การสแกนเฉพาะ และการสแกนช่วง ตรวจสอบให้แน่ใจว่าใช้วิธีการเข้าถึงดัชนีที่เหมาะสมตามข้อกำหนดการสืบค้นและการกระจายข้อมูล ทบทวนแผนการดำเนินการสืบค้นและพิจารณาใช้คำแนะนำเพื่อเป็นแนวทางให้ Oracle ในการเลือกวิธีการเข้าถึงดัชนีที่มีประสิทธิภาพสูงสุด
- ปรับการค้นหาย่อยให้เหมาะสม: ข้อความค้นหาย่อยอาจส่งผลต่อประสิทธิภาพการค้นหา หากเป็นไปได้ ให้เขียนแบบสอบถามย่อยใหม่เป็นการรวมหรือใช้มุมมองแบบอินไลน์เพื่อเพิ่มประสิทธิภาพ ตรวจสอบให้แน่ใจว่าข้อความค้นหาย่อยมีความสัมพันธ์กันอย่างมีประสิทธิภาพ และประเมินความจำเป็นในการทำให้ผลลัพธ์ของข้อความค้นหาย่อยเป็นจริง หากมีการใช้ซ้ำหลายครั้งภายในข้อความค้นหา
- รวบรวมและรีเฟรชสถิติ: สถิติที่ถูกต้องมีความสำคัญอย่างยิ่งต่อการเพิ่มประสิทธิภาพการค้นหา รวบรวมสถิติอย่างสม่ำเสมอโดยใช้แพ็คเกจ DBMS_STATS หรือคำสั่ง ANALYZE เพื่อให้แน่ใจว่าเครื่องมือเพิ่มประสิทธิภาพมีข้อมูลล่าสุดเกี่ยวกับตารางและจำนวนสมาชิกของดัชนี พิจารณาการใช้ฮิสโตแกรมสำหรับการแจกแจงข้อมูลที่เบ้
โปรดจำไว้ว่า การเพิ่มประสิทธิภาพการค้นหาไม่ใช่กระบวนการเดียวที่เหมาะกับทุกคน ประสิทธิภาพของเทคนิคการปรับให้เหมาะสมอาจแตกต่างกันไปขึ้นอยู่กับปัจจัยต่างๆ เช่น ปริมาณข้อมูล ความซับซ้อนของคิวรี และสภาพแวดล้อมของฐานข้อมูลเฉพาะ การทำความเข้าใจหลักการพื้นฐานและติดตามและปรับการสืบค้นอย่างต่อเนื่องสามารถช่วยรักษาประสิทธิภาพสูงสุดได้
วิธีปรับการสืบค้น SQL ให้เหมาะสมโดยใช้ dbForge Studio สำหรับ Oracle
DbForge Studio สำหรับ Oracle มีคุณสมบัติหลายอย่างที่สามารถช่วยเพิ่มประสิทธิภาพการสืบค้น SQL ต่อไปนี้เป็นบางวิธีที่คุณสามารถใช้ประโยชน์จากเครื่องมือเพื่อเพิ่มประสิทธิภาพการค้นหาของคุณ:
ตัวสร้างโปรไฟล์แบบสอบถาม
DbForge Studio สำหรับ Oracle มีตัวสร้างโปรไฟล์แบบสอบถามที่ให้คุณวิเคราะห์ประสิทธิภาพของแบบสอบถาม SQL ของคุณ คุณสามารถเรียกใช้คิวรีโดยเปิดใช้งานตัวสร้างโปรไฟล์ และจะให้ข้อมูลโดยละเอียดเกี่ยวกับการดำเนินการคิวรี รวมถึงเวลาดำเนินการ การใช้ทรัพยากร และแผนการดำเนินการคิวรี แผนดำเนินการค้นหาสามารถช่วยระบุคอขวดและพื้นที่สำหรับการเพิ่มประสิทธิภาพ คุณสามารถระบุปัญหาด้านประสิทธิภาพที่อาจเกิดขึ้นได้ เช่น วิธีการรวมที่ไม่เหมาะสม การสแกนตารางแบบเต็ม หรือดัชนีที่ขาดหายไป คุณยังสามารถเปรียบเทียบแผนการดำเนินการต่างๆ และประเมินผลกระทบของเทคนิคการเพิ่มประสิทธิภาพการค้นหาต่างๆ
สำหรับการสาธิต ฉันได้นำเข้าตารางสองสามตารางของฐานข้อมูล SQL Server ชื่อ Stackoverflow2010 ไปยังฐานข้อมูล Oracle ชื่อ EltechIndia ฉันใช้ยูทิลิตี้นำเข้าข้อมูลภายนอกของ dbForge Studio
EltechIndia มีตารางชื่อ USERS ซึ่งเก็บข้อมูลของผู้ใช้ที่ใช้ฐานข้อมูล Stackoverflow ตอนนี้ ให้ฉันใช้คำสั่ง SELECT อย่างง่ายเพื่อดูรายละเอียดของผู้ใช้
แบบสอบถาม:
เลือก u”Id”, u”AboutMe”, u”Age”, u”CreationDate”, u”DisplayName”, u”EmailHash”, u”LastAccessDate”, u”Reputation”, u ”Views”, u”WebsiteUrl”, u”AccountId”
จาก NISARG.USERS u WHERE U”EmailHash”='[email protected]';
เปิดใช้งานโหมดผู้สร้างโปรไฟล์จากเมนูด้านบนและดำเนินการค้นหา
ภาพหน้าจอของผู้สร้างโปรไฟล์:
ดังที่คุณเห็นในภาพหน้าจอด้านบน ตัวสร้างโปรไฟล์จะเติมข้อมูลต่อไปนี้:
- Query Profiler Session: ส่วนเซสชันของ Query Profiler มีรายละเอียดของแผนการดำเนินการ Query และสถิติเซสชัน นอกจากนี้ยังประกอบด้วยประวัติของการดำเนินการสืบค้นใด ๆ ซึ่งสามารถใช้เพื่อเปรียบเทียบแผนการดำเนินการของแบบสอบถามหลาย ๆ
- แผนการดำเนินการแบบสอบถาม: ตัวสร้างโปรไฟล์แบบสอบถามแสดงแผนการดำเนินการแบบสอบถามในรูปแบบตารางพร้อมรายละเอียดของการดำเนินการที่ดำเนินการในขณะที่สร้างชุดผลลัพธ์ แสดงขั้นตอนการดำเนินการ วิธีการเข้าถึง และค่าใช้จ่ายโดยประมาณสำหรับแต่ละส่วนของแบบสอบถาม
สามารถใช้แผนการดำเนินการที่สร้างขึ้นเพื่อระบุการใช้ทรัพยากรและคอขวดของ IO และพารามิเตอร์อื่นๆ ที่อาจส่งผลให้ประสิทธิภาพลดลง สมมติว่าตัวสร้างโปรไฟล์แบบสอบถามแสดงปัญหาด้านประสิทธิภาพที่สามารถแก้ไขได้โดยการเพิ่มดัชนีที่ขาดหายไปหรือเปลี่ยนแปลงดัชนีที่มีอยู่ ในกรณีนั้น เราสามารถใช้คุณสมบัติ Index Manager ของ dbForge studio
การจัดการดัชนี
การจัดทำดัชนีที่มีประสิทธิภาพเป็นสิ่งจำเป็นสำหรับการเพิ่มประสิทธิภาพการค้นหา dbForge Studio สำหรับ Oracle มีเครื่องมือสำหรับจัดการดัชนี เช่น การสร้าง แก้ไข และปล่อยดัชนี คุณสามารถตรวจสอบดัชนีที่มีอยู่ในตารางของคุณและตรวจสอบให้แน่ใจว่ามีการกำหนดค่าอย่างเหมาะสม คุณยังสามารถใช้เครื่องมือเพื่อสร้างดัชนีใหม่หรือแก้ไขดัชนีที่มีอยู่ตามรูปแบบการเข้าถึงแบบสอบถาม
dbForge Studio จัดเตรียมคุณลักษณะที่สามารถใช้เพื่อสร้าง/แก้ไข/วางดัชนีใดๆ บนตาราง การเปลี่ยนแปลงดัชนีสามารถทำได้จากตัวจัดการวัตถุของ dbForge studio โดยคลิกขวาที่ตาราง USER แล้วเลือกแก้ไขตาราง
แท็บอื่นจะเปิดขึ้นพร้อมกับรายละเอียดของตารางผู้ใช้ คุณสามารถทำการเปลี่ยนแปลงในตารางที่มีอยู่ เช่น เพิ่ม/แก้ไข/ลบดัชนี ข้อจำกัด และคอลัมน์ได้ที่นี่ นอกจากนี้ คุณสามารถเพิ่มหรือเปลี่ยนพารามิเตอร์การกำหนดค่าอื่นๆ เช่น ที่เก็บข้อมูล ความถูกต้องชั่วคราว เป็นต้น
ในตอนนี้ หากต้องการเพิ่ม/แก้ไขดัชนี ให้คลิกที่แท็บดัชนี หน้าต่างที่มีรายละเอียดดัชนีจะเปิดขึ้น ซึ่งมีลักษณะเหมือนภาพต่อไปนี้:
ดังที่คุณเห็นในภาพหน้าจอด้านบน ตัวจัดการดัชนีแบ่งออกเป็นสามส่วน
- รายการดัชนีที่มีอยู่: ที่นี่ คุณสามารถดูรายละเอียด (ชื่อดัชนีและคอลัมน์หลัก) ของดัชนีที่สร้างไว้แล้วในตาราง
- ดัชนีใหม่: ที่นี่ คุณสามารถระบุคุณสมบัติของดัชนี เช่น ชื่อของดัชนี ประเภทของดัชนี และคอลัมน์หลักของดัชนี
- สร้างคำสั่งดัชนี: ในส่วนนี้ คุณสามารถดูคำสั่งสร้างสำหรับ
- ตารางที่เรากำลังเพิ่มดัชนี
- ดัชนีที่มีอยู่
- ดัชนีใหม่
สคริปต์ทั้งหมดสามารถใช้เพื่อสร้างวัตถุใหม่บนสคีมาหรือตารางอื่น
การดีบัก SQL
คุณลักษณะการดีบัก SQL ใน dbForge Studio สำหรับ Oracle ช่วยให้คุณสามารถดำเนินการผ่านโค้ด SQL ตั้งค่าเบรกพอยต์ และตรวจสอบตัวแปรระหว่างการดำเนินการค้นหา คุณลักษณะนี้ไม่ได้เพิ่มมูลค่ามากนักเมื่อเทียบกับตัวจัดการดัชนีและตัวสร้างโปรไฟล์แบบสอบถาม ถึงกระนั้น บางครั้ง การระบุว่าคำค้นหาใดภายในกระบวนงานที่เก็บไว้อาจเป็นประโยชน์ในการระบุปัญหาด้านประสิทธิภาพ เราสามารถระบุพื้นที่ที่ต้องการการเพิ่มประสิทธิภาพและทำการปรับเปลี่ยนที่จำเป็นได้ด้วยการดีบักแบบสอบถาม
โปรดทราบว่าในขณะที่ใช้ dbForge Studio สำหรับ Oracle สิ่งสำคัญคือต้องมีความเข้าใจที่ดีเกี่ยวกับเทคนิคการเพิ่มประสิทธิภาพการสืบค้น SQL และแนวทางปฏิบัติที่ดีที่สุด เครื่องมือนี้ให้ข้อมูลเชิงลึกและฟีเจอร์ที่มีประโยชน์เพื่อช่วยเพิ่มประสิทธิภาพการค้นหา ถึงกระนั้น สิ่งสำคัญคือต้องตีความผลลัพธ์อย่างถูกต้องและใช้การเพิ่มประสิทธิภาพที่เหมาะสมตามฐานข้อมูลและข้อกำหนดการสืบค้นเฉพาะของคุณ
บทสรุป
การปรับแต่งประสิทธิภาพฐานข้อมูลเป็นหนึ่งในงานที่สำคัญที่สุดสำหรับผู้ดูแลระบบฐานข้อมูล และการเลือกเครื่องมือตรวจสอบฐานข้อมูลที่ดีที่สุดเพื่อดูแลและตรวจสอบประสิทธิภาพของเซิร์ฟเวอร์ฐานข้อมูลก็เป็นสิ่งสำคัญเช่นกัน ในบทความนี้ เราได้เรียนรู้เกี่ยวกับพื้นฐานของการปรับแต่งประสิทธิภาพและวิธีที่ dbForge Studio สำหรับ Oracle สามารถช่วยเราปรับปรุงประสิทธิภาพของฐานข้อมูลได้