In Oracle, it is possible to refresh just part of the data. Aber in PostgreSQL werden materialisierte Ansichten seit 9.3 (die aktuelle Version jetzt) unterstützt, die nicht so lang ist. Also frage ich mich: Ist es möglich, nur einen Teil der Daten in der materialisierten Ansicht in PostgreSQL 9.3 zu aktualisieren? Wenn ja, wie geht das?Ist es möglich, eine materialisierte Ansicht in PostgreSQL teilweise zu aktualisieren?
Antwort
PostgreSQL unterstützt noch keine progressiven/partiellen Aktualisierungen von materialisierten Ansichten.
9.4 fügt REFRESH MATERIALIZED VIEW CONCURRENTLY
hinzu, aber es muss noch vollständig regeneriert werden.
Wir hoffen, dass wir Unterstützung in 9.5 sehen, wenn jemand enthusiastisch genug ist. Es ist jedoch nur möglich, dies ohne benutzerdefinierte Trigger/Regeln für einfache materialisierte Ansichten zu tun, und spezielle Unterstützung wäre sogar erforderlich, um Dinge wie die inkrementelle Aktualisierung eines count(...) ... GROUP BY ...
zu handhaben.
Die Oracle-Antwort, auf die Sie verweisen, ist jedoch keine inkrementelle Aktualisierung. Es ist Aktualisieren von Partitionen. Damit PostgreSQL dies nativ unterstützt, müsste es zuerst eine echte deklarative Partitionierung unterstützen - was es nicht tut, obwohl wir darüber diskutieren, ob es für 9.5 möglich ist.
Ich bin gerade auf ein ähnliches Problem gestoßen. Von Craig's answer lernen, dass es nicht möglich ist, habe ich einen Workaround verwendet. Ich dekonstruiert die materialisierte Ansicht und schloss sich die einzelnen Teile in einem VIEW
:
- eine
MATERIALIZED VIEW
in Frage für jede Spalte erstellen (material_col1
,material_col2
, etc.), eine gemeinsameid
Spalte. - Verwenden Sie einen regelmäßigen
VIEW
(fake_materialized_view
) auf derid
Spalte derMATERIALIZED VIEW
s Tabellen verknüpft REFRESH MATERIALIZED VIEW
nach Bedarf- Verwenden Sie Ihre Abfrage auf
fake_materialized_view
statt
Die VIEW
würde etwas wie folgt aussehen:
CREATE VIEW fake_materialized_view AS
SELECT m1.id, m1.col1, m2.col2
FROM material_col1 as m1 LEFT JOIN
material_col2 as m2
ON m1.id = m2.id;
Leider ist das nur hilfreich für "partitionierte Spalten", nicht für "partitionierte Zeilen" (die nicht notwendigerweise einfach definierbaren Partitionen und eher einzelnen Zeilen zugeordnet sind) –
@AndreasDietrich Ich denke, man könnte etwas Ähnliches mit 'UNION ALL' machen. .. – n1000
- 1. Ist es möglich, eine materialisierte Ansicht in Oracle teilweise zu aktualisieren?
- 2. postgresql 9.5 - Kind materialisierte Ansicht sperren, während Eltern gleichzeitig aktualisieren
- 3. Ist es möglich, eine Sperre in PostgreSQL automatisch zu lösen?
- 4. Fehler aktualisieren oder aktualisieren materialisierte Ansicht mit Trigger
- 5. Anrufen aus einem anderen eine materialisierte Ansicht materialisierte Ansicht in Postgres
- 6. PostgreSQL materialisierte Ansicht blockiert das Lesen während der Aktualisierung
- 7. Ist es möglich, eine data.table von PostgreSQL zu lesen?
- 8. Ist es möglich, eine Abhängigkeit zwischen PostgreSQL-Funktionen zu finden?
- 9. Ist es möglich, Speicher teilweise freizugeben?
- 10. Ist es möglich, die Ansicht eines Fragments
- 11. Ist es möglich, einen Solr-Kern für materialisierte Ansichten zu erstellen?
- 12. Wie kann ich eine materialisierte Ansicht als materialisierte Ansicht und nicht als Tabelle ausgeben?
- 13. Ist es möglich, eine Unteransicht einer Ansicht durch Ziehen in eine andere Ansicht zu verschieben?
- 14. ist es möglich, UIButton Titel/Text programmatisch zu aktualisieren?
- 15. Cassandra Indizes vs materialisierte Ansicht
- 16. Ist es möglich, Daten in eine MySQL-Ansicht einzufügen?
- 17. Ist es möglich, Zellen in einer Datagrid-Ansicht zu verschmelzen
- 18. Kopiere materialisierte Ansicht in eine neue Tabelle in Cassandra
- 19. ASP.NET MVC 2: Teilweise aktualisieren?
- 20. Wie kann eine materialisierte Ansicht in sqlite erstellt werden?
- 21. Ist es möglich, Daten an PostgreSQL-Trigger zu übergeben?
- 22. Impala: Wie erstellt man eine materialisierte Ansicht in Impala?
- 23. git + teilweise freigegebene Dateien zwischen Zweigen/Repositories. Ist es möglich?
- 24. Ist es möglich, google amp HTML-Seiten zu aktualisieren?
- 25. Ist es möglich, Ihre hochgeladene iPhone-Anwendung automatisch zu aktualisieren?
- 26. Ist es möglich, ADF-Pipeline-Eigenschaft durch Powershell zu aktualisieren
- 27. Mungo und teilweise select/aktualisieren
- 28. Cassandra materialisierte Ansicht zeigen veraltete Daten
- 29. Ist es möglich, native JavaFX-Apps automatisch zu aktualisieren?
- 30. Ist es möglich, Sharepoint-Liste ohne "ID" zu aktualisieren?
Können Sie ein Beispiel dafür nennen, was Sie meinen? Ich dachte, der Punkt einer materialisierten Ansicht wäre, nur einen Teil der Daten zu zeigen. – Lucas
Diese Antwort, die Sie für Oracle verknüpft haben, ist nicht sehr überzeugend. Es besagt, dass Sie eine der Partitionen für eine partitionierte MV erzwingen können. Da die Partitionierung in PostgreSQL nicht wirklich eine eingebaute Funktion ist, sondern etwas, das Sie selbst in die Rollen gebracht haben, könnte man den gleichen Ansatz auch in Postgres finden. – Thilo