日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創建/刷新物化視圖支持批量寫入

PolarDB PostgreSQL版集群支持創建/刷新物化視圖的批量寫入。

前提條件

支持的PolarDB PostgreSQL版的版本如下:

PostgreSQL 14(內核小版本14.9.15.0及以上)

說明

您可通過如下語句查看PolarDB PostgreSQL版的內核小版本的版本號:

PostgreSQL 14

select version();

背景信息

物化視圖 (Materialized View)是一個包含查詢結果的數據庫對象。與普通的視圖不同,物化視圖不僅保存視圖的定義,還保存了創建物化視圖時的數據副本。當物化視圖的數據與視圖定義中的數據不一致時,可以進行物化視圖刷新 (Refresh)保持物化視圖中的數據與視圖定義一致。物化視圖本質上是對視圖定義中的查詢做預計算,以便于在查詢時復用。

CREATE TABLE AS語法用于將一個查詢所對應的數據構建為一張新的表,其表結構與查詢的輸出列完全相同。

SELECT INTO語法用于建立一張新表,并將查詢所對應的數據寫入表中,而不是將查詢到的數據返回給客戶端。其表結構與查詢的輸出列完全相同。

原理介紹

對于物化視圖的創建(CREATE MATERIALIZED VIEW)和刷新(REFRESH MATERIALIZED VIEW),以及CREATE TABLE AS/SELECT INTO語法,由于在數據庫層面需要完成的工作步驟十分相似,因此PostgreSQL內核使用同一套代碼邏輯來處理這幾種語法。內核執行過程中主要包含以下兩個步驟:

  1. 數據掃描:執行視圖定義或CREATE TABLE AS/SELECT INTO語法中定義的查詢,掃描符合查詢條件的數據。

  2. 數據寫入:將上一步中掃描到的數據寫入到一個新的物化視圖或表中。

PolarDB PostgreSQL版對數據寫入步驟引入了批量寫入的優化。當需要寫入的數據量較大時,不再每次掃描一個元組就立刻寫入表或物化視圖中,而是在內存中攢夠一定數量的元組后,一次性批量寫入表或物化視圖中,從而能夠減少記錄WAL日志和查詢頁面空閑空間映射的開銷,降低對頁面的鎖定頻率,顯著縮短上述DDL的執行時間。

使用說明

將參數polar_enable_create_table_as_bulk_insert設置為ON即可啟用該功能,默認值為ON

SET polar_enable_create_table_as_bulk_insert TO ON;