ความแตกต่างระหว่าง Views และ Materialized Views ใน Oracle คืออะไร


คำตอบ:


356

มุมมองที่เป็นรูปธรรมนั้นเป็นดิสก์และได้รับการอัปเดตเป็นระยะตามข้อกำหนดการสืบค้น

มุมมองเป็นเสมือนเท่านั้นและเรียกใช้คำจำกัดความแบบสอบถามทุกครั้งที่มีการเข้าถึง


54
นอกจากนี้เมื่อคุณต้องการประสิทธิภาพการทำงานของข้อมูลที่ไม่จำเป็นต้องทันสมัยจนถึงวินาทีที่ผ่านมามุมมองที่เป็นรูปธรรมจะดีกว่า แต่ข้อมูลของคุณจะเก่ากว่าในมุมมองมาตรฐาน โดยปกติรายงาน BI จะได้รับประโยชน์มากมายจากมุมมองที่เป็นรูปธรรม
Marthinus

29
@Marthinus - ถูกต้องยกเว้นในกรณีของมุมมองที่เป็นรูปธรรมซึ่งเป็น REFRESH ON COMMIT - MV จะส่งคืนข้อมูลที่ได้รับมอบหมาย
Jeffrey Kemp

2
DISK มีความหมายอย่างไร มันหมายความว่าตารางไม่ได้เป็นส่วนหนึ่งของ DISK หรือไม่? มันถูกเก็บไว้ในไฟล์และการเข้าถึง DISK นั้นเร็วกว่าการเข้าถึงไฟล์ .... หรือไม่?
Kanagavelu Sugumar

1
@KanagaveluSugumar ใช่ตารางจริงถูกเขียนไปยังดิสก์ด้วย
dacracot

5
@dacracot ขอบคุณ! ฉันคิดว่าคุณหมายถึงพูดนอกเหนือจากตารางฐานข้อมูลใน DISK; MVIEW นี้ยังรักษาตารางโดยการแก้ไขการรวมทั้งหมด ดังนั้นในการเข้าถึงตารางเดี่ยวรันไทม์ก็เพียงพอแล้ว และไม่จำเป็นต้องค้นหาหลายตารางสำหรับเงื่อนไขการเข้าร่วมซึ่งโดยปกติแล้วจะทำในมุมมองปกติ ขอบคุณ!
Kanagavelu Sugumar

333

เข้าชม

พวกเขาประเมินข้อมูลในตารางที่อยู่ภายใต้คำนิยามของมุมมองในเวลาที่มุมมองการสอบถาม เป็นมุมมองแบบลอจิคัลของตารางของคุณโดยไม่มีการจัดเก็บข้อมูลใด ๆ

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

มุมมองที่ปรากฏ

พวกเขามีความคล้ายคลึงกับมุมมองปกติในการที่พวกเขามีมุมมองเชิงตรรกะของข้อมูลของคุณ (ขึ้นอยู่กับคำสั่งเลือก) แต่พื้นฐานชุดผลแบบสอบถามได้รับการบันทึกลงในตาราง ข้อเสียของเรื่องนี้คือเมื่อคุณสอบถามมุมมองที่ปรากฏขึ้นคุณกำลังสืบค้นตารางซึ่งอาจถูกทำดัชนีด้วย

นอกจากนี้เนื่องจากการรวมทั้งหมดได้รับการแก้ไขในเวลาการรีเฟรชมุมมองที่เป็นรูปธรรมคุณต้องจ่ายราคาของการเข้าร่วมหนึ่งครั้ง (หรือบ่อยครั้งที่คุณรีเฟรชมุมมองที่ปรากฏของคุณ) แทนแต่ละครั้งที่คุณเลือกจากมุมมองที่ปรากฏ นอกจากนี้เมื่อเปิดใช้งานการเขียนแบบสอบถามใหม่ Oracle สามารถเพิ่มประสิทธิภาพการสืบค้นที่เลือกจากแหล่งที่มาของมุมมองที่เป็นรูปธรรมของคุณในแบบที่มันจะอ่านจากมุมมองที่เป็นรูปธรรมของคุณแทน ในสถานการณ์ที่คุณสร้างมุมมอง materialized เป็นรูปแบบของตารางรวมหรือเป็นสำเนาของแบบสอบถามที่ดำเนินการบ่อยครั้งนี้สามารถเร่งเวลาตอบสนองของแอปพลิเคชันผู้ใช้ของคุณได้อย่างรวดเร็ว ข้อเสียก็คือว่าข้อมูลที่คุณได้รับกลับมาจาก materialized ดูจะเป็นเพียงถึงวันที่ครั้งสุดท้ายที่มุมมองที่ปรากฏได้รับการฟื้นฟู


มุมมอง Materialized สามารถตั้งค่าเพื่อฟื้นฟูด้วยตนเองตามเวลาที่กำหนดหรือขึ้นอยู่กับฐานข้อมูลการตรวจสอบการเปลี่ยนแปลงในข้อมูลจากหนึ่งในตารางพื้นฐาน มุมมอง Materialized สามารถปรับปรุงแบบเพิ่มหน่วยโดยการรวมมุมมอง Materialized มุมมองบันทึกซึ่งทำหน้าที่เป็นแหล่งที่มาของการดักจับข้อมูลที่เปลี่ยนแปลงบนตารางต้นแบบ

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


มุมมองรูปธรรมนอกจากนี้ยังช่วยในการรับประกันเป็นช่วงเวลาที่สอดคล้องกันในเวลาคล้ายกับการแยกภาพรวม


9
+1 สำหรับคำอธิบายโดยละเอียด แต่ข้อเสียของการเขียนข้อความซ้ำคืออะไร หากการเขียนแบบสอบถามซ้ำจะทำให้ออราเคิลสามารถเพิ่มประสิทธิภาพการสืบค้นให้ดียิ่งขึ้นไปอีกเราควรเปิดใช้งานการเขียนแบบสอบถามซ้ำใช่ไหม?
Rosdi Kasim

6
@Rosdi เขาพูดว่า: "ข้อมูลที่คุณได้รับกลับมาจากมุมมองที่ปรากฏขึ้นเป็นข้อมูลล่าสุดเป็นครั้งสุดท้ายที่มุมมองที่เป็นรูปธรรมได้รับการรีเฟรช"
Jeffrey Kemp

49

มุมมองใช้แบบสอบถามเพื่อดึงข้อมูลจากตารางต้นแบบ

มุมมอง materialized เป็นตารางบนดิสก์ที่มีชุดผลลัพธ์ของแบบสอบถาม

มุมมองที่เป็นรูปธรรมจะถูกนำมาใช้เป็นหลักในการเพิ่มประสิทธิภาพของแอปพลิเคชันเมื่อไม่สามารถทำได้หรือเป็นที่ต้องการในการใช้มุมมองมาตรฐานที่มีการใช้ดัชนีกับมัน Materialized views สามารถปรับปรุงเป็นประจำทั้งผ่านทริกเกอร์หรือโดยใช้ON COMMIT REFRESHตัวเลือก สิ่งนี้ต้องการการอนุญาตพิเศษเล็กน้อย แต่ไม่มีอะไรซับซ้อน ON COMMIT REFRESHมีมาตั้งแต่ Oracle 10 เป็นอย่างน้อย


มีตัวเลือก "REFRESH ON COMMIT" ซึ่งสามารถระบุได้ใน Materialized View
Hybris95

ขอบคุณ! ฉันจะอัปเดตคำตอบ คุณรู้หรือไม่เมื่อเพิ่มฟังก์ชันการทำงานนี้ลงใน Oracle
ยิระมะยา Peschka

20

มุมมองเป็นโครงสร้างที่มีลักษณะคล้ายตารางที่มีเหตุผลเป็นหลักซึ่งมีการค้นหาอย่างรวดเร็ว ผลลัพธ์ของคิวรีมุมมองจะไม่ถูกเก็บไว้ที่ใดก็ได้บนดิสก์และมุมมองจะถูกสร้างขึ้นใหม่ทุกครั้งที่เรียกใช้คิวรี Materialized views เป็นโครงสร้างจริงที่เก็บอยู่ในฐานข้อมูลและเขียนลงดิสก์ พวกเขาจะปรับปรุงตามพารามิเตอร์ที่กำหนดเมื่อพวกเขาถูกสร้างขึ้น


DISK มีความหมายอย่างไร มันหมายความว่าตารางไม่ได้เป็นส่วนหนึ่งของ DISK หรือไม่? มันถูกเก็บไว้ในไฟล์และการเข้าถึง DISK นั้นเร็วกว่าการเข้าถึงไฟล์ .... หรือไม่?
Kanagavelu Sugumar

18

Materialized view - ตารางบนดิสก์ที่มีชุดผลลัพธ์ของแบบสอบถาม

มุมมองที่ไม่ใช่ materiased - แบบสอบถามที่ดึงข้อมูลจากตารางต้นแบบ


7

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

มุมมอง Materialized:เก็บข้อมูลทางกายภาพและรับการปรับปรุงเป็นระยะ ขณะทำการสืบค้น MV จะให้ข้อมูลจาก MV


2

กำลังเพิ่มคำตอบสวย ๆ ของ Mike McAllister ...

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

เมื่อคุณสร้างมุมมองที่เป็นรูปธรรมคุณจะพบว่า Oracle สร้างทั้ง mview และเป็นตารางที่มีชื่อเดียวกันซึ่งอาจทำให้สับสนได้


ตารางที่รองรับมุมมองที่ปรากฏจะไม่ใช้ชื่อเดียวกับมุมมอง
Jeffrey Kemp

@JeffreyKemp คุณแน่ใจเหรอ? คำตอบที่ยอมรับได้ที่นี่stackoverflow.com/a/33552513 การอ้างสิทธิ์เป็นอย่างอื่น แม้ว่าใช่สิ่งนี้อาจแตกต่างกันไปในปี 2010 เมื่อคุณแสดงความคิดเห็น ...
leqid

ความคิดเห็นของฉันด้านบนต้องเป็นรุ่นเก่ากว่า (อาจเป็น 9i) คุณพูดถูก MVs ได้รับตารางที่มีชื่อเดียวกันอย่างน้อยในรุ่นที่ทันสมัย
Jeffrey Kemp

1

Materialized views เป็นมุมมองเชิงตรรกะของ data-driven โดยแบบสอบถามแบบใช้เลือกข้อมูล แต่ผลลัพธ์ของแบบสอบถามจะถูกเก็บไว้ในตารางหรือดิสก์รวมทั้งคำจำกัดความของแบบสอบถามจะเก็บไว้ในฐานข้อมูล

ประสิทธิภาพของการดูแบบ Materialized จะดีกว่าการดูแบบปกติเนื่องจากข้อมูลของการดูแบบ Materialized จะถูกจัดเก็บในตารางและตารางอาจมีการจัดทำดัชนีให้เร็วขึ้นสำหรับการเข้าร่วมและการเข้าร่วมจะเสร็จสิ้นในเวลาที่มีการรีเฟรช เข้าร่วมคำสั่งในกรณีที่ดู

ความแตกต่างอื่น ๆ รวมถึงในกรณีของมุมมองเราจะได้รับข้อมูลล่าสุดเสมอ แต่ในกรณีของมุมมองวัสดุเราจำเป็นต้องรีเฟรชมุมมองเพื่อรับข้อมูลล่าสุด ในกรณีของมุมมอง Materialized เราต้องการทริกเกอร์พิเศษหรือวิธีการอัตโนมัติเพื่อให้สามารถรีเฟรช MV ได้ซึ่งไม่จำเป็นสำหรับมุมมองในฐานข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.