ทำไมไม่ใช้ตารางแทนมุมมองที่ปรากฏขึ้น


53

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

คำตอบ:


59

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

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


14

Materialized Views จะถูกอัพเดตโดยอัตโนมัติเนื่องจากตารางพื้นฐานถูกอัพเดต


1
โปรดทราบว่าON DEMANDนี่เป็นพฤติกรรมการรีเฟรชเริ่มต้น มุมมอง materialized ON COMMITต้องได้รับการสร้างขึ้นด้วย และการบำรุงรักษามุมมองที่ปรากฏไม่ได้ฟรี มันอาจจะถูกกว่าไก
durette

10

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


4

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

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

ในที่สุดการทำเช่นนั้นอาจทำให้สัญญาการสนับสนุนของคุณเป็นโมฆะกับผู้ขายปรึกษากับทนายความของคุณ - blah-blah-blah


2

แทนที่จะไปโดยตรงไปยังมุมมองรูปธรรมให้ฉันอธิบายชม

โดยทั่วไปมีมุมมองที่มีเหตุผลแตกต่างจากตาราง หากเราต้องการซ่อนคอลัมน์บางอย่างกับผู้ใช้เราไม่สามารถทำได้โดยใช้ตาราง สร้างมุมมองที่เราสามารถบรรลุความปลอดภัย

Use-case:ถ้ามุมมองเกี่ยวข้องกับภายใน 10 ตารางพร้อมกับกลุ่มโดยและฟังก์ชันมีแถวนับล้านแถวมันต้องใช้เวลาในการดำเนินการมาก

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

มุมมองที่เป็นรูปธรรมถูกปรับปรุงเป็นระยะตามคำจำกัดความของแบบสอบถามตารางไม่สามารถทำได้


0

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

ตัวอย่าง: มุมมอง Materialized ที่มีข้อมูลจากหลายตารางสามารถตั้งค่าให้รีเฟรชโดยอัตโนมัติในช่วงเวลาที่ไม่มาก ตารางฟิสิคัลจะต้องใช้รหัสเพิ่มเติมเพื่อตัด / โหลดข้อมูลซ้ำ

ความปลอดภัยสามารถควบคุมได้ดีขึ้นในมุมมองที่เป็นรูปธรรมแทนที่จะเป็นตาราง


0

มุมมอง materialized เป็นวัตถุฐานข้อมูลที่มีผลลัพธ์ของแบบสอบถาม พวกเขาคือสำเนาของข้อมูลที่อยู่ในระยะไกลหรือใช้เพื่อสร้างตารางสรุปตามการรวมตัวของข้อมูลของตาราง http://www.oraappdata.com/2016/04/materialized-view.html


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