ปรับแต่งประสิทธิภาพการสืบค้นฐานข้อมูลเชิงสัมพันธ์

ลูกค้าจำนวนมากประสบปัญหาด้านประสิทธิภาพกับแอปพลิเคชันคลังข้อมูล ในบางกรณี การสืบค้น SQL ที่สร้างโดย Oracle Analytics จะมีความซับซ้อนต่อการวิเคราะห์ หัวข้อนี้ให้แนวทางบางประการเกี่ยวกับวิธีวิเคราะห์และลดปัญหาด้านประสิทธิภาพที่อาจเกิดจากการสืบค้น SQL ที่สร้างโดย Oracle Analytics

หัวข้อนี้ไม่ครอบคลุมปัญหาด้านประสิทธิภาพเนื่องจากปัญหาเกี่ยวกับเน็ตเวิร์ก เบราเซอร์ หรือการนำเสนอรายงานของคุณ

วิเคราะห์ล็อกการสืบค้นสำหรับ Oracle Analytics (ต้องมีล็อกระดับ 3)

โปรดดูข้อมูลเกี่ยวกับวิธีการค้นหาล็อกนี้ หรือทำความเข้าใจเนื้อหาที่ รวบรวมและวิเคราะห์ล็อกการสืบค้น

  1. เปรียบเทียบระยะเวลาที่การสืบค้นของคุณใช้ใน Oracle Analytics กับเวลาที่ใช้ในฐานข้อมูล ซึ่งก็คือ เวลาตอบกลับ เทียบกับ ระยะเวลาการสืบค้นแบบฟิสิคัล โดยปกติ เวลาที่ใช้ใน Oracle Analytics จะไม่เกินสองสามวินาที
  2. หากเวลาตอบกลับนานกว่าสองสามวินาที ให้วิเคราะห์แต่ละขั้นตอนที่ดำเนินการใน Oracle Analytics เพื่อหาสาเหตุ (ต้องมีล็อกระดับ 5)

วิเคราะห์การสืบค้น SQL แบบฟิสิคัล

  1. ตรวจสอบว่าตารางทั้งหมดที่อยู่ในการสืบค้นเป็นตารางที่จำเป็น มองหาตารางที่ถูกรวม แต่ไม่อยู่ในส่วนของคำสั่ง SELECT และไม่มีการใช้ฟิลเตอร์ใดๆ (ฟิลเตอร์ที่แท้จริง ไม่ใช่เงื่อนไขการรวม)
  2. ระบุจำนวนการสืบค้นแบบฟิสิคัลและการสืบค้นย่อยที่ถูกสร้างขึ้น กล่าวให้ชัดเจนกว่านั้นคือ จำนวนครั้งที่การสืบค้นอ่านตารางแฟคท์ โดยปกติ การสืบค้นจะอ่านตารางแฟคท์เพียงตารางเดียว และเพียงครั้งเดียวเท่านั้น หากมีตารางแฟคท์มากกว่าหนึ่งตาราง ให้ค้นหาสาเหตุ และดูว่าคุณสามารถย้ายบางตารางออกได้หรือไม่
  3. ตรวจสอบคอลัมน์ที่แยกออก, กฎการสรุปรวมที่ไม่มีการบวกค่า (REPORT_AGGREGATE, count(distinct)...), ขั้นตอนการเลือก, การสืบค้นย่อยในรายงาน, โอเปอเรเตอร์ของเซ็ต (UNION), ยอดรวม, ยอดรวมย่อย, วิวจำนวนมาก เป็นต้น
  4. ตรวจสอบการรวมภายนอก ค้นหาตำแหน่งเริ่มต้น และดูว่าคุณสามารถย้ายบางรายการออกโดยเปลี่ยนแปลงการออกแบบได้หรือไม่

วิเคราะห์แผนการรัน

หากการออปติไมซ์การสืบค้น SQL ยังไม่เพียงพอ ให้วิเคราะห์แผนการรันเพื่อค้นหาสาเหตุที่แท้จริงของปัญหาด้านประสิทธิภาพของคุณ ขอให้ผู้ดูแลระบบฐานข้อมูลของคุณ (DBA) ช่วยคุณ ณ จุดนี้การปรับปรุงประสิทธิภาพมีสี่วิธีหลักดังนี้
  1. ลดปริมาณของการเรียกอินพุต-เอาต์พุตโดยการปรับปรุงพาธการเข้าใช้ข้อมูล (ดัชนีต่างๆ)
  2. ลดปริมาณของการเรียกอินพุต-เอาต์พุตโดยการลดปริมาณข้อมูลที่อ่าน ตัวอย่างเช่น คุณสามารถตรวจสอบฟิลเตอร์ที่ใช้กับโครงสร้างโมเดลข้อมูล (ดูส่วนถัดไป)
  3. เพิ่มการทำงานแบบขนาด (จำนวนเธรดที่ใช้ในการอ่านตารางขนาดใหญ่)
  4. เพิ่มความเร็วของการเรียกอินพุต-เอาต์พุต (การปรับปรุงโครงสร้างพื้นฐาน, ฐานข้อมูลในหน่วยความจำ เป็นต้น)

ตรวจสอบและปรับปรุงโมเดลข้อมูลเพื่อลดปริมาณข้อมูลที่อ่าน

  1. สร้างตารางการสรุปรวม
  2. ใช้การแยกส่วน

    ตัวอย่างเช่น หากผู้ใช้เลือกข้อมูลจากปี, ไตรมาส หรือเดือนปัจจุบันเป็นส่วนใหญ่ คุณสามารถแบ่งข้อมูลแฟคท์ออกเป็นสองตารางได้ เช่น ปัจจุบันและชุดข้อมูล ในฐานข้อมูล Oracle คุณสามารถใช้การแบ่งพาร์ติชันได้เช่นกัน

  3. ใช้การดีนอร์มัลไลซ์เพื่อลบจำนวนการรวม
  4. แบ่งตารางต่างๆ ออกเพื่อลดจำนวนคอลัมน์

    ปริมาณข้อมูลที่อ่านไม่ได้ขึ้นอยู่กับจำนวนแถวในแต่ละตารางเท่านั้น แต่ปริมาณตารางยังขึ้นอยู่กับจำนวนและขนาดของคอลัมน์ของตารางอีกด้วย ตัวอย่างเช่น คุณสามารถแบ่งตารางขนาดใหญ่ที่มี 500 คอลัมน์ออกเป็นสองตาราง โดยตารางหนึ่งประกอบด้วยคอลัมน์ที่ใช้บ่อย 50 คอลัมน์ และอีกตารางหนึ่งประกอบด้วย 450 คอลัมน์ที่เหลือที่แทบจะไม่ได้ใช้

ปัญหาด้านประสิทธิภาพมากมายใน Oracle Analytics เกิดจากการออกแบบที่ไม่ดี เนื่องจากทำให้เกิดการสร้างการสืบค้น SQL ที่มีประสิทธิภาพลดลง คุณสามารถปรับปรุงการสืบค้น SQL ที่ Oracle Analytics สร้างขึ้นได้โดยการแก้ไขการออกแบบ การดำเนินการนี้จะส่งผลกระทบอย่างมาก ไม่เฉพาะต่อประสิทธิภาพของรายงานของคุณ แต่กับจำนวนทรัพยากรที่ใช้ในฐานข้อมูลด้วย