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

Serverless Computing使用指南

對于CPU或內存開銷大的SQL作業,Hologres Serverless Computing功能支持其使用獨立的Serverless Computing資源,以確保任務間資源隔離,避免資源競爭與相互干擾。本文將介紹如何使用Serverless Computing功能。

前提條件

  • 實例類型為:通用型計算組型

  • 地域和可用區為:華東1(杭州)的可用區J、 華南1(深圳)的可用區F和可用區D、華東2(上海)的可用區E、華北2(北京)的可用區I、中國(香港)的可用區B、新加坡的可用區A和可用區C。

    說明

    上述地域其他可用區不支持,如有需要,請提交工單加入實時數倉Hologres交流群,申請遷移可用區。目前可用區支持熱遷移,實例影響與熱升級相同,詳情請參見實例升級。

  • 實例版本為:Hologres V2.1.17及以上版本。

    說明

    如果您的實例是V2.1.17以下版本,請您使用實例升級或加入實時數倉Hologres交流群,申請升級實例,詳情請參見如何獲取更多的在線支持?。

使用限制

  • 以下情況不支持使用Serverless Computing:

    • 不支持只讀從實例的查詢。主實例、計算組實例可正常使用。

    • 開啟了多行DML事務的查詢,如set hg_experimental_enable_transaction = on。

    • 使用Fixed Plan的SQL。

    • DLF外部表查詢與寫入。

    • 跨庫查詢與寫入。

    • 加密表(包括內部表和外部表)。

  • Serverless Computing現已支持如下任務:

    • 支持主要的DML任務,包括INSERT(不含INSERT OVERWRITE)、INSERT ON CONFLICT(UPSERT)、DELETE和UPDATE。

    • V2.2.14版本起,支持DQL任務。

    • V3.0.1版本起,支持DML中的COPY任務。

    • V3.0.9版本起,支持DML中的CREATE TABLE AS(CTAS)任務。

    • 暫不支持RESHARDING、INSERT OVERWRITE任務。

  • 如果需要使用EXTENSION,現在僅支持如下EXTENSION:

    • ClickHouse

    • Flow Analysis

    • PostGIS

    • RoaringBitmap

    • BSI

    • Proxima

  • Hologres實例可申請的Serverless Computing資源量(以下簡稱Quota)受實例計算資源限制,對應關系如下表。

    說明
    • Quota表示每個實例執行階段(EXECUTE)的SQL所占用的Serverless Computing資源的上限。

    • 每個可用區的Serverless Computing資源池由當前可用區所有實例共享。

    • 超過實例Quota限制或Serverless Computing資源池已滿的情況下,提交的SQL會排隊(進入QUEUE狀態)等待資源。

    • Serverless Computing資源池中的SQL執行期間,申請到的計算資源由當前SQL獨享,不會同時執行其他SQL。

    實例計算資源(CU)

    Serverless Computing資源Quota

    實例計算資源<32

    不支持使用Serverless Computing。

    32=<實例計算資源<688

    Serverless Computing資源Quota為實例計算資源的3倍。例如32CU的實例,可用的Serverless Computing資源Quota=32*3=96 CU。

    實例計算資源>=688

    支持最高達到2048CU的資源配額。

開啟Serverless Computing

新購實例

訪問Hologres實例列表,單擊新增引擎實例,在實例購買頁面,設置開啟Serverless Computing參數為。關于新購實例詳情,請參見購買Hologres。

image

存量實例

訪問Hologres實例列表,在頂部菜單欄左側選擇地域,選擇目標實例,單擊操作列中的升配,在變配頁面,設置開啟Serverless Computing參數選為

重要

開啟Serverless Computing配置期間會重啟實例,請盡量在業務低峰期執行變配操作,建議應用具備重連機制。升配計算資源配置涉及計算資源重新分配,元數據變更等操作,通常需要2~5分鐘,請您耐心等待。

image

關閉Serverless Computing

您可以訪問Hologres實例列表,在頂部菜單欄左側選擇地域,選擇目標實例,單擊操作列中的升配,在變配頁面,設置開啟Serverless Computing參數選為。

image

說明
  • 關閉Serverless Computing配置期間會重啟實例,請盡量在業務低峰期執行變配操作,建議應用具備重連機制。升配計算資源配置涉及計算資源重新分配,元數據變更等操作,通常需要2~5分鐘,請您耐心等待。

  • Serverless Computing關閉后,不支持指定Serverless Computing資源,當前Serverless Computing資源中運行和排隊的任務都會失敗。

使用建議

建議使用Serverless Computing資源執行SQL時,同時Session級別配置活躍Query運行超時時間,以避免SQL運行時間過長或者等待時間過長,導致堵塞后續所有任務。

  • 語法示例

    set statement_timeout = <time>;

    參數說明

    time:超時時間取值范圍為0~2147483647ms,單位默認為ms(當time后加單位時需要使用單引號,否則會報錯)。默認超時時間為8小時。

  • 使用示例

    -- 使用 Serverless Computing 資源執行 SQL.
    SET hg_computing_resource = 'serverless';
    
    -- 設置該SQL的優先級是5.
    SET hg_experimental_serverless_computing_query_priority to 5;
    
    --設置活躍query超時時間是2小時.
    SET statement_timeout = '2h';
    
    -- 執行 SQL.
    INSERT INTO sink_tbl SELECT * FROM source_tbl;
    
    -- 重置配置
    reset hg_computing_resource;
    reset statement_timeout;

使用Serverless Computing資源執行SQL

  • 您可以通過執行如下代碼,使用Serverless Computing資源執行SQL命令。

    -- 使用Serverless Computing資源執行SQL,默認值為local,表示使用本實例資源執行SQL。
    SET hg_computing_resource = 'serverless';
    
    --提交DML后重置配置,保證非必要的SQL不會使用serverless資源。
    reset hg_computing_resource;
    重要
    • 建議Session級別設置,請勿在數據庫級別修改該參數。

    • 建議提交DML后,使用reset hg_computing_resource重置資源,重置后的SQL將在本地執行,保證非必要的SQL不使用serverless資源。

  • 使用示例

    --數據準備--
    -- 創建源表
    CREATE TABLE source_tbl ( id int );
    -- 創建目標表
    CREATE TABLE sink_tbl ( id int );
    -- 寫入樣例數據
    INSERT INTO source_tbl
    SELECT * FROM generate_series(1, 99999999);
    
    --使用Serverless Computing資源執行SQL--
    SET hg_computing_resource = 'serverless';
    --執行SQL
    INSERT INTO sink_tbl SELECT * FROM source_tbl;
    -- 重置配置
    reset hg_computing_resource;

    您可以執行以下代碼,查看上述SQL執行計劃。

    -- 使用Serverless Computing資源執行SQL
    SET hg_computing_resource = 'serverless';
    
    -- 執行SQL
    EXPLAIN INSERT INTO sink_tbl SELECT * FROM source_tbl;
    
    -- 重置配置
    reset hg_computing_resource;

    返回結果如下。返回結果中Computing Resource: Serverless:表示使用Serverless Computing資源執行。

                                            QUERY PLAN                                        
    ------------------------------------------------------------------------------------------
     Gather  (cost=0.00..5.18 rows=100 width=4)
       ->  Insert  (cost=0.00..5.18 rows=100 width=4)
             ->  Redistribution  (cost=0.00..5.10 rows=100 width=4)
                   ->  Local Gather  (cost=0.00..5.10 rows=100 width=4)
                         ->  Decode  (cost=0.00..5.10 rows=100 width=4)
                               ->  Seq Scan on source_tbl  (cost=0.00..5.00 rows=100 width=4)
     Computing Resource: Serverless
     Optimizer: HQO version 2.1.0
    (8 rows)

高級操作

通過對單條SQL設置可使用的資源量上限以及按優先級的排隊機制,保障進入Serverless Computing資源的SQL能穩定有序的執行。

  • 在Hologres Serverless Computing中,單條SQL可使用的Serverless Computing資源量由以下三個參數決定。系統會取三個參數的最小值為單條SQL申請資源。

    參數

    說明

    Quota

    Hologres實例可使用的Serverless Computing資源上限,詳情請參見設置單條SQL的Serverless Computing資源上限。

    hg_experimental_serverless_computing_max_cores

    每條SQL可被分配的Serverless Computing資源上限,默認為512 CU,支持修改。

    hg_experimental_serverless_computing_required_cores

    系統自動估算該SQL需要使用的Serverless Computing資源量,支持修改,修改后系統不再自動估算。

  • 同時,Hologres還支持為Serverless Computing資源中執行的SQL設置優先級。優先級取值范圍1~5,5為最高優先級,默認優先級為3。

示例場景:

假設現有Hologres實例規格為32 CU,該實例可使用的Serverless Computing資源上限為96 CU。當SQL A正在使用Serverless Computing的64 CU資源運行,同時,Serverless任務隊列中已有SQL B(需要申請48 CU資源,優先級5)、SQL C(需要申請32 CU資源,優先級3)等待運行。此時,系統會等待SQL A執行完成后優先申請48 CU資源用于執行SQL B,而非先使用剩余的32 CU資源來執行SQL C。

設置單條SQL的Serverless Computing資源上限

  • 您可以執行如下代碼,設置每條SQL被分配的Serverless Computing資源上限。

    -- 配置單個Serverless Computing分配的最大CU,默認為512。
    SET hg_experimental_serverless_computing_max_cores = 512;
    
    -- 重置配置
    reset hg_experimental_serverless_computing_max_cores;
  • 使用示例

    -- 使用Serverless Computing資源執行SQL
    SET hg_computing_resource = 'serverless';
    
    -- 設置單條SQL最多使用32CU執行
    SET hg_experimental_serverless_computing_max_cores = 32;
    
    -- 執行SQL
    INSERT INTO sink_tbl SELECT * FROM source_tbl;
    
    -- 重置配置
    reset hg_computing_resource;
    reset hg_experimental_serverless_computing_max_cores;
說明
  • 建議數據庫級別設置。

  • 實際分配時,系統會根據SQL的復雜程度自動分配資源。

  • 實際執行時會取hg_experimental_serverless_computing_max_cores和Quota的最小值作為上限,評估SQL需要使用的Serverless Computing資源。

  • 實際申請資源的步長為15 CU。

設置單條SQL的Serverless Computing資源分配

針對hg_experimental_serverless_computing_required_cores參數,系統會根據SQL的復雜程度自動估算需要的資源量。系統自動估算出的資源量可以有效平衡Serverless資源利用和SQL執行時長。若需某條SQL能夠分配到更多的Serverless Computing資源,您可通過設置hg_experimental_serverless_computing_required_cores參數進行Serverless Computing資源分配。

  • 您可以執行如下代碼,設置單個SQL語句在執行時所分配的Serverless Computing資源。

    -- 默認為0,表示該Serverless Computing的計算資源由系統自動估算
    SET hg_experimental_serverless_computing_required_cores = XX;
    
    -- 重置配置
    reset hg_experimental_serverless_computing_required_cores;
  • 使用示例

    --使用Serverless Computing資源執行SQL
    SET hg_computing_resource = 'serverless';
    
    --Serverless Computing的計算資源不由系統估算,申請96CU的計算資源
    SET hg_experimental_serverless_computing_required_cores = 96;
    
    -- 執行SQL
    INSERT INTO sink_tbl SELECT * FROM source_tbl;
    
    -- 重置配置
    reset hg_computing_resource;
    reset hg_experimental_serverless_computing_required_cores;
說明
  • 建議Session級別設置,請勿在數據庫級別修改該參數。

  • 實際執行時,會取Quota、hg_experimental_serverless_computing_required_coreshg_experimental_serverless_computing_max_cores的最小值來申請資源。

設置單條SQL的Serverless Computing資源的優先級

  • 您可以執行如下代碼,設置Serverless Computing資源中SQL執行的優先級。

    -- 優先級范圍為 [1, 5], 數值越大,優先級越高,越優先分配資源(和分配資源數量無關)
    -- 默認優先級為3.
    SET hg_experimental_serverless_computing_query_priority to 5;
    -- 重置配置
    reset hg_experimental_serverless_computing_query_priority;
  • 使用示例

    --使用Serverless Computing資源執行 SQL.
    SET hg_computing_resource = 'serverless';
    
    -- 設置該SQL的優先級是5
    SET hg_experimental_serverless_computing_query_priority to 5;
    
    -- 執行SQL
    INSERT INTO sink_tbl SELECT * FROM source_tbl;
     
    -- 重置配置
    reset hg_computing_resource;
    reset hg_experimental_serverless_computing_query_priority;

設置用戶/角色的全部SQL默認通過Serverless Computing執行

您可以執行如下代碼,針對某一用戶/角色,使其發起的全部SQL均默認使用Serverless Computing資源執行。

--針對某用戶在某DB下,默認使用Serverless Computing資源執行SQL
ALTER USER <user_name> IN DATABASE <db_name> SET hg_computing_resource = 'serverless';
說明
  • 該配置方法的優先級高于數據庫級別配置GUC,低于Session級別配置GUC,詳情請參見GUC參數。

  • 若需要取消上述配置,請執行代碼ALTER USER <user_name> IN DATABASE <db_name> RESET hg_computing_resource;

設置查詢隊列Query Queue的全部SQL通過Serverless Computing執行

您可以執行如下代碼,以針對某一查詢隊列,使其所有SQL語句均使用Serverless Computing資源執行。有關查詢隊列的配置方法,詳情請參見Query Queue(Beta)。

說明

如果實例所在可用區不支持Serverless Computing,仍將使用本實例計算資源執行。

  • 通用型實例

    -- 設置目標Queue中的查詢全部通過Serverless資源運行
    CALL hg_set_query_queue_property('<query_queue_name>', 'computing_resource', 'serverless');
    
    -- (可選)設置目標Queue中的查詢使用Serverless資源時的優先級,支持1-5,默認為3
    CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');
  • 計算組型實例

    -- 設置目標Queue中的查詢全部通過Serverless資源運行
    CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless');
    
    -- (可選)設置目標Queue中的查詢使用Serverless資源時的優先級,支持1-5,默認為3
    CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');

更多操作

查看實例使用Serverless Computing的監控指標

您可通過以下方式查看Serverless Query最長運行時長、Serverless Computing Query排隊數量、Serverless Computing資源Quota使用率的監控指標。如有需要,可進一步配置監控告警,詳情請參見云監控。

  1. 登錄Hologres管理控制臺。

  2. 在Hologres管理控制臺頂部菜單欄,選擇目標地域。

  3. 單擊左側導航欄的實例列表

  4. 實例列表頁面單擊目標實例名稱,進入實例詳情頁。

    您也可以單擊目標實例操作列的管理,進入實例詳情頁。

  5. 在實例詳情頁左側導航欄,單擊監控信息,查看監控指標。

查看Serverless Computing資源中SQL任務的運行狀態

  • 查看Serverless Computing資源中正在運行的SQL任務。

    SELECT
        *,
        (running_info::json) ->> 'computing_resource' AS computing_resource,
        (running_info::json) ->> 'current_stage' AS current_stage
    FROM
        hg_stat_activity
    WHERE (running_info::json) ->> 'computing_resource' = 'Serverless'
        AND (running_info::json) -> 'current_stage'->>'stage_name' = 'EXECUTE'
  • 查看Serverless Computing資源中排隊的SQL任務。

    SELECT
        *,
        (running_info::json) ->> 'computing_resource' AS computing_resource,
        (running_info::json) ->> 'current_stage' AS current_stage
    FROM
        hg_stat_activity
    WHERE (running_info::json) ->> 'computing_resource' = 'Serverless'
        AND (running_info::json) -> 'current_stage'->>'stage_name' = 'QUEUE'
  • 查看Serverless Computing資源中SQL任務的運行狀態。

    SELECT
        *,
        (running_info::json) ->> 'computing_resource' AS computing_resource,
        (running_info::json) ->> 'current_stage' AS current_stage
    FROM
        hg_stat_activity
    WHERE 
        query_id = '<query_id>';

查詢歷史的Serverless Computing任務

  • 在慢Query日志中查看在Serverless Computing資源中執行的歷史任務。

    SELECT
        *,
        extended_cost::json ->> 'queue_time_ms' AS queue_time_ms,--Serverless Computing資源中SQL等待排隊時長。
        extended_cost::json ->> 'serverless_allocated_cores' AS serverless_allocated_cores,--Serverless Computing資源分配給當前SQL的CU數。
        extended_cost::json ->> 'serverless_allocated_workers' AS serverless_allocated_workers,--Serverless Computing資源分配給當前SQL的Worker數。
        extended_cost::json ->> 'serverless_resource_used_time_ms' AS serverless_resource_used_time_ms--當前SQL實際占用Serverless Computing資源的時長。
    FROM
        hologres.hg_query_log
    WHERE
        query_extinfo @> ARRAY['serverless_computing'::text];
  • hologres.hg_serverless_computing_query_log視圖中查看在Serverless Computing資源中執行的歷史任務。

    SELECT
        *
    FROM
        hologres.hg_serverless_computing_query_log;
    說明

    自2.1.18版本開始,為了方便查詢,將慢Query日志中Serverless Computing任務相關內容固化為列,并且新增了hologres hg_serverless_computing_query_log視圖。相對于慢Query日志hologres.hg_serverless_computing_query_log視圖中新增以下字段:

    • queue_time_ms:Serverless Computing資源中SQL等待排隊時長,單位毫秒(ms)。

    • serverless_allocated_cores:Serverless Computing資源實際分配給當前SQL的CU數。

    • serverless_allocated_workers:Serverless Computing資源實際分配給當前SQL的Worker數。

    • serverless_resource_used_time_ms:當前SQL實際占用Serverless Computing資源的時長,單位毫秒(ms)。

    • extended_info字段中新增以下信息:

      • serverless_computing_source:表示SQL來源,表示使用Serverless Computing資源執行的SQL。取值如下:

        • user_submit:自行指定使用Serverless資源執行的SQL,與Query Queue無關。

        • query_queue:指定查詢隊列的SQL全部由Serverless資源執行。

        • query_queue_rerun:通過Query Queue的大查詢控制功能,自動使用Serverless資源重新運行的SQL。

      • query_id_of_triggered_rerun:該字段僅在serverless_computing_source為query_queue_rerun時存在,表示重新運行的SQL對應的原始Query ID。

    針對部分特殊任務,如COPY、CTAS等,在慢Query日志中會產生多條記錄,包括COPY或CTAS本身及其過程中產生的INSERT記錄,其中的INSERT會實際使用Serverless資源執行??梢酝ㄟ^COPY或CTAS的trans_id字段關聯到INSERT記錄,關聯示例如下。

    SELECT
        query_id,
        query,
        extended_info
    FROM
        hologres.hg_query_log
    WHERE
        extended_info ->> 'source_trx' = '<transaction_id>' -- 通過COPY/CTAS等本身記錄的trans_id字段可以取到transaction id
    ORDER BY
        query_start
    ;

查看當前數據庫運行的SQL占用的Serverless Computing資源

  • 查看Serverless Computing資源中正在運行的SQL任務占用的總資源量。

    SELECT
        datname::text as db_name,
        (running_info::json) -> 'current_stage' ->> 'stage_name' AS current_stage,
        SUM(((running_info::json) -> 'current_stage' ->> 'serverless_allocated_cores')::int) AS total_computing_resource,
        count(1) as query_qty
    FROM
        hg_stat_activity
    WHERE (running_info::json) ->> 'computing_resource' = 'Serverless'
    GROUP BY
        1,
        2;
  • 返回結果字段說明

    字段

    描述

    db_name

    數據庫名稱。

    current_stage

    當前SQL執行階段。

    • PARSE:SQL解析。

    • OPTIMIZE:生成執行計劃。

    • QUEUE:等待資源。

    • START:Query開始階段。

    • EXECUTE:Query執行階段。

    • FINISH:Query完成。

    total_computing_resourcet

    在當前數據庫和SQL執行階段,使用的Serverless Computing資源總量。

    query_qty

    SQL數量。