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

創建物化視圖

更新時間:

本文介紹如何創建物化視圖。

權限要求

  • 創建視圖需要有數據庫或表級別的CREATE權限。

  • 刷新物化視圖需要有數據庫或表級別的INSERT權限。

  • 需要有物化視圖所涉及的所有表的相關列(或整個表)的SELECT權限。

  • 如果在創建物化視圖時指定物化視圖為自動刷新模式,需要具備通過服務器本地(即127.0.0.1)或者任意IP(即'%')刷新視圖的權限。

語法

CREATE [OR REPLACE] MATERIALIZED VIEW <mv_name>
[MV DEFINITION]
[REFRESH [COMPLETE|FAST] [ON [DEMAND |OVERWRITE] [START WITH date] [NEXT date]]]
[QUERY REWRITE]
AS 
<QUERY BODY>;

關鍵字說明

說明

OR REPLACE

根據是否存在重名物化視圖選擇對應的規則來創建物化視圖,具體規則如下:

  • 若不存在重名物化視圖,AnalyticDB for MySQL會直接創建一個新視圖。

  • 若存在重名物化視圖,AnalyticDB for MySQL會先刪除原有的重名物化視圖,再重新創建。

說明

集群版本為3.1.4.7或以上的AnalyticDB for MySQL集群才支持該參數。

  • 查看企業版基礎版湖倉版集群的內核版本,請執行SELECT adb_version();。如需升級內核版本,請聯系技術支持。

  • 查看和升級數倉版集群的內核版本,請參見查看和升級版本

mv_name

物化視圖名稱。

MV DEFINITION

定義物化視圖中表相關的特性。

  • 物化視圖使用一張普通的表結構來存儲數據。創建物化視圖時支持使用普通表定義中所有的參數,如分區鍵、分布鍵、索引和冷熱數據存儲策略等。創建物化視圖時建議定義分區鍵和主鍵,以提高后續查詢性能。關于創建普通表支持的參數說明,請參見CREATE TABLE

  • 物化視圖和普通表一樣,默認全列建立索引。為減少存儲空間和寫入I/O,如果不需要全列建立索引,您可以指定INDEX關鍵字對特定列建立索引。在物化視圖中建索引的方式與普通表的語法一致,建索引的語句,請參見CREATE TABLE

  • 與創建表的語法一致,創建物化視圖時也不支持定義查詢中沒有輸出的列。

REFRESH COMPLETE

定義物化視圖的刷新模式為全量刷新。

未指定物化視圖的刷新模式時,默認刷新模式為全量刷新。

REFRESH FAST

定義物化視圖的刷新模式為增量刷新。

說明

3.1.9.0及以上版本支持單表增量刷新物化視圖;3.2.0.0及以上版本支持多表增量刷新物化視圖。詳情請參見增量刷新物化視圖(預發)

  • 查看企業版基礎版湖倉版集群的內核版本,請執行SELECT adb_version();。如需升級內核版本,請聯系技術支持。

  • 查看和升級數倉版集群的內核版本,請參見查看和升級版本

ON DEMAND

按需觸發刷新,即您可以在需要刷新物化視圖時手動觸發刷新,或根據刷新需求配置NEXT自動觸發刷新。

默認全量刷新觸發模式為ON DEMAND

ON OVERWRITE

物化視圖引用的基表在執行INSERT OVERWRITE語句導致數據被覆蓋后,會觸發全量刷新,適合通過Batchload批量導入數據的場景。

配置ON OVERWRITE時,不能定義START WITHNEXT

START WITH

定義自動全量刷新物化視圖時的首次刷新時間。參數選填,若不填,默認首次刷新時間為當前時間點。

說明

支持使用時間函數,但只支持精確到秒,毫秒部分會被截斷。

更多關于刷新物化視圖的詳情,請參見全量刷新物化視圖

NEXT

定義自動全量刷新物化視圖時的下次刷新時間。若需要設置自動刷新,NEXT參數必填。

說明

支持使用時間函數,但只支持精確到秒,毫秒部分會被截斷。

更多關于刷新物化視圖的詳情,請參見全量刷新物化視圖

QUERY REWRITE

開啟或關閉查詢改寫功能。開啟后查詢可被自動改寫到物化視圖上,物化視圖可以被當作緩存使用。取值如下:

  • DISABLE QUERY REWRITE:關閉當前物化視圖的查詢改寫功能。

  • ENABLE QUERY REWRITE:開啟當前物化視圖的查詢改寫功能。

說明
  • 集群版本為3.1.4或以上的AnalyticDB for MySQL集群才支持開啟該功能。如何查看集群版本,請參見查看版本。如需升級版本,請提交工單聯系技術支持。

  • 未指定該參數時,默認當前物化視圖的查詢改寫功能關閉。

QUERY BODY

定義物化視圖的查詢主體,查詢主體可以是表、邏輯視圖或者物化視圖。其中:

  • 需要為查詢中輸出的表達式列定義別名,建議使用具有實際意義的別名。例如(SUM(price) AS total_price),表示設置表達式列SUM(price)的別名為total_price

  • 物化視圖查詢所涉及的基表不可被刪除,且基表中的列不可被刪除或修改。

  • 支持使用WITH語法進行查詢。

使用限制

  • 不支持對物化視圖執行INSERTDELETEUPDATE操作。

  • 不支持刪除或重命名物化視圖中引用的基表或基表中的列。如需修改基表需要先刪除物化視圖。

  • 默認情況下,一個AnalyticDB for MySQL集群支持創建的物化視圖上限如下:

    • 集群版本低于3.1.4.7:最多支持創建8個物化視圖。

    • 集群版本等于或高于3.1.4.7:最多支持創建64個物化視圖。

    說明

    查看企業版湖倉版集群的內核版本,請執行SELECT adb_version();。如需升級內核版本,請聯系技術支持。

示例

  • 創建物化視圖myview1,每五分鐘刷新一次。

    CREATE MATERIALIZED VIEW myview1
    REFRESH NEXT now() + interval 5 minute
    AS
    SELECT count(*) as cnt FROM base;
  • 創建物化視圖myview2,每周一凌晨2點刷新。

    CREATE MATERIALIZED VIEW myview2
    REFRESH 
     START WITH DATE_FORMAT(now() + interval 7 - weekday(now()) day, '%Y-%m-%d 02:00:00') 
     NEXT DATE_FORMAT(now() + interval 7 - weekday(now()) day, '%Y-%m-%d 02:00:00')
    AS
    SELECT count(*) as cnt FROM base;
  • 創建物化視圖myview3,每天凌晨2點刷新。

    CREATE MATERIALIZED VIEW myview3
    REFRESH 
     START WITH DATE_FORMAT(now() + interval 1 day, '%Y-%m-%d 02:00:00')
     NEXT DATE_FORMAT(now() + interval 1 day, '%Y-%m-%d 02:00:00')
    AS
    SELECT count(*) as cnt FROM base;
  • 創建物化視圖myview4,每個月第一天凌晨2點刷新。

    CREATE MATERIALIZED VIEW myview4
    REFRESH NEXT DATE_FORMAT(last_day(now()) + interval 1 day, '%Y-%m-%d 02:00:00')
    AS
    SELECT count(*) as cnt FROM base;
  • 創建物化視圖myview5,只刷一次。

    CREATE MATERIALIZED VIEW myview5
    REFRESH START WITH now() + interval 1 day
    AS 
    SELECT count(*) as cnt FROM base;
  • 創建物化視圖myview6,不自動刷新,完全依靠手動刷新。

    CREATE MATERIALIZED VIEW myview6 (
      PRIMARY KEY (id)
    ) DISTRIBUTED BY HASH (id)
    AS
    SELECT id, name FROM base;
  • 創建物化視圖myview7,指定列建立索引,默認全部列建立索引。

    CREATE MATERIALIZED VIEW myview7 (
      INDEX (name),
      PRIMARY KEY (id)
    ) DISTRIBUTED BY HASH (id)
    AS
    SELECT id, name, age FROM base;
  • 創建物化視圖myview8,指定分區鍵和注釋。

    CREATE MATERIALIZED VIEW myview8 (
      name varchar(10),
      value double,
      KEY INDEX_ID(id) COMMENT 'id',
      CLUSTERED KEY INDEX(name, value),
      PRIMARY KEY(id)
    ) 
    DISTRIBUTED BY hash(id)
    PARTITION BY value(date_format(dat, "%Y%m%d")) LIFECYCLE 30
    COMMENT 'MATERIALIZED VIEW c'
    AS 
    SELECT * FROM base;

相關文檔