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

創(chuàng)建物化視圖的跨機(jī)并行加速和批量寫入

更新時(shí)間:

本文介紹創(chuàng)建物化視圖的跨機(jī)并行加速和批量寫入功能。

前提條件

支持的PolarDB PostgreSQL的版本如下:

  • PostgreSQL 11(內(nèi)核小版本1.1.22及以上)

  • PostgreSQL 14(內(nèi)核小版本14.6.6.0及以上)

說明

您可通過如下語句查看PolarDB PostgreSQL的內(nèi)核小版本的版本號(hào):

  • PostgreSQL 14

    SELECT version();
  • PostgreSQL 11

    SHOW polar_version;

背景信息

物化視圖 (Materialized View)是一個(gè)包含查詢結(jié)果的數(shù)據(jù)庫對(duì)象。與普通的視圖不同,物化視圖不僅保存視圖的定義,還保存了創(chuàng)建物化視圖時(shí)的數(shù)據(jù)副本。當(dāng)物化視圖的數(shù)據(jù)與視圖定義中的數(shù)據(jù)不一致時(shí),可以進(jìn)行物化視圖刷新 (Refresh)保持物化視圖中的數(shù)據(jù)與視圖定義一致。物化視圖本質(zhì)上是對(duì)視圖定義中的查詢做預(yù)計(jì)算,以便于在查詢時(shí)復(fù)用。

  • CREATE TABLE AS語法:用于將一個(gè)查詢所對(duì)應(yīng)的數(shù)據(jù)構(gòu)建為一張新的表,其表結(jié)構(gòu)與查詢的輸出列完全相同。

  • SELECT INTO語法:用于建立一張新表,并將查詢所對(duì)應(yīng)的數(shù)據(jù)寫入表中,而不是將查詢到的數(shù)據(jù)返回給客戶端。其表結(jié)構(gòu)與查詢的輸出列完全相同。

原理介紹

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

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

  2. 數(shù)據(jù)寫入:將上一步中掃描到的數(shù)據(jù)寫入到一個(gè)新的物化視圖或表中。

PolarDB PostgreSQL對(duì)上述兩個(gè)步驟分別引入了ePQ并行掃描和批量數(shù)據(jù)寫入的優(yōu)化。當(dāng)需要掃描或?qū)懭氲臄?shù)據(jù)量較大時(shí),能夠顯著提升上述DDL語法的性能,縮短執(zhí)行時(shí)間:

  • ePQ并行掃描:通過ePQ功能,利用多個(gè)計(jì)算節(jié)點(diǎn)的I/O帶寬和計(jì)算資源并行執(zhí)行視圖定義中的查詢,提升計(jì)算資源和帶寬的利用率。

  • 批量寫入:不再將掃描到的每一個(gè)元組依次寫入表或物化視圖,而是在內(nèi)存中攢夠一定數(shù)量的元組后,一次性批量寫入表或物化視圖中,減少記錄WAL日志的開銷,降低對(duì)頁面的鎖定頻率。

使用說明

  • ePQ并行掃描

    通過設(shè)置polar_px_enable_create_table_as參數(shù)的值,開啟或關(guān)閉ePQ并行掃描來加速CREATE TABLE AS語法中的查詢過程。取值如下:

    • ON(默認(rèn)):開啟ePQ并行掃描來加速CREATE TABLE AS語法中的查詢過程。

    • OFF:關(guān)閉ePQ并行掃描來加速CREATE TABLE AS語法中的查詢過程。

    SET polar_px_enable_create_table_as = ON;
    說明
    • 該參數(shù)生效的前提為已開啟ePQ功能(即polar_enable_px參數(shù)設(shè)置為ON)。

    • 由于ePQ功能的限制,該優(yōu)化不支持CREATE TABLE AS ... WITH OIDS語法。對(duì)于該語法的處理流程為回退使用PostgreSQL內(nèi)置優(yōu)化器為DDL定義中的查詢生成執(zhí)行計(jì)劃,并通過PostgreSQL的單機(jī)執(zhí)行器完成查詢。

  • 批量寫入

    通過設(shè)置polar_enable_create_table_as_bulk_insert參數(shù)的值,開啟或關(guān)閉批量寫入來加速SELECT INTO語法中的寫入過程。取值如下:

    • ON(默認(rèn)):開啟批量寫入來加速SELECT INTO語法中的寫入過程。

    • OFF:關(guān)閉批量寫入來加速SELECT INTO語法中的寫入過程。

    SET polar_enable_create_table_as_bulk_insert = ON;