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

將本地表并行導(dǎo)出至OSS引擎

將本地表并行導(dǎo)出至OSS引擎可以極大地提升數(shù)據(jù)導(dǎo)出效率。本文介紹了將本地表并行導(dǎo)出至OSS引擎的相關(guān)內(nèi)容。

使用限制

  • PolarDB MySQL版集群的產(chǎn)品版本需為企業(yè)版并滿足以下版本要求:

    • 8.0.1版本:修訂版本需達(dá)到8.0.1.1.38或更高。

    • 8.0.2版本:修訂版本需達(dá)到8.0.2.2.25或更高。

  • 僅支持并行導(dǎo)出單表查詢的結(jié)果。不支持Join、Order By、Group By等多表查詢和復(fù)雜查詢的結(jié)果。

  • 建議您在只讀節(jié)點(diǎn)執(zhí)行導(dǎo)出任務(wù)。您可以在SQL語(yǔ)句中添加HINT語(yǔ)法 /*FORCE_SALVE*/或直接連接只讀節(jié)點(diǎn)進(jìn)行導(dǎo)出。

參數(shù)說(shuō)明

參數(shù)名稱

參數(shù)級(jí)別

參數(shù)說(shuō)明

loose_oss_outfile_buffer_size

Global

單個(gè)oss outfile線程可以占用的內(nèi)存大小。一般情況下,占用的內(nèi)存越大,導(dǎo)出速度越快。

取值范圍:102400~536870912。默認(rèn)值為134217728。單位為字節(jié)。

使用說(shuō)明

語(yǔ)法

SELECT * FROM table_name INTO OSSOUTFILE 'outfile_path' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
說(shuō)明
  • COLUMNS TERMINATED BY:表示每個(gè)字段之間的分隔符。

  • OPTIONALLY ENCLOSED BY:表示字段兩端的標(biāo)識(shí)符,加上OPTIONALLY后,只會(huì)在字符串類型的字段兩端加標(biāo)識(shí)符,否則會(huì)在所有類型的字段兩端加標(biāo)識(shí)符。

  • NULL_MARKER BY:表示NULL值輸出到文本的字符。NULL的輸出值有如下三種定義方式,優(yōu)先級(jí)從高到低:

    • NULL_MARKER:直接定義NULL的輸出值,NULL_MARKER可以定義為任意值,優(yōu)先級(jí)最高。

    • ESCAPED BY:只能寫單字符,NULL的輸出值為字符+N。例如,ESCAPED BY '\',則NULL會(huì)被輸出為\N,優(yōu)先級(jí)第二。

    • NULL(默認(rèn)):如果以上兩者都沒有,則默認(rèn)NULL的輸出值為字符串“NULL”,優(yōu)先級(jí)最低。NULL的兩端沒有ENCLOSED標(biāo)識(shí)符。

  • LINES TERMINATED BY:每一行之間的分隔符。

詳情請(qǐng)參見MySQL官方文檔

參數(shù)說(shuō)明

參數(shù)

說(shuō)明

outfile_path

主要標(biāo)識(shí)輸出到OSS的文件位置,包含如下幾部分內(nèi)容:

  • OSS server信息,用來(lái)標(biāo)識(shí)當(dāng)前使用的OSS節(jié)點(diǎn)和上傳的基本路徑。詳情請(qǐng)參見通過(guò)OSS外表訪問(wèn)OSS數(shù)據(jù)

  • (可選)當(dāng)前任務(wù)單獨(dú)的路徑

  • 上傳后的文件名。

上述三者之間用/連接。當(dāng)前任務(wù)單獨(dú)的路徑中可以包含多個(gè)/,表示使用多級(jí)路徑。上傳到OSS引擎后,其整體的文件路徑為:OSS server中的路徑+單獨(dú)的路徑。outfile_path中必須包含上傳后的文件名,用來(lái)說(shuō)明最后生成的文件名。

table_name

表名稱。

示例

您可以選擇在SQL語(yǔ)句前添加HINT語(yǔ)法來(lái)并行導(dǎo)出數(shù)據(jù)。或開啟彈性并行查詢功能后,直接執(zhí)行SQL語(yǔ)句來(lái)導(dǎo)出數(shù)據(jù)。開啟并行查詢功能的具體操作請(qǐng)參見概述

此處以在SQL語(yǔ)句SELECT * FROM lineitem;中添加HINT為例,介紹如何將本地表并行導(dǎo)出至OSS引擎。

  1. 執(zhí)行以下命令,查看當(dāng)前SQL語(yǔ)句是否可以并行執(zhí)行。

    EXPLAIN SELECT /*+parallel(4)*/ * FROM lineitem;

    執(zhí)行結(jié)果如下:

    +----+-------------+-----------+------------+------+---------------+------+---------+------+---------+----------+---------------------------+
    | id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows    | filtered | Extra                     |
    +----+-------------+-----------+------------+------+---------------+------+---------+------+---------+----------+---------------------------+
    |  1 | SIMPLE      | <gather1> | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 5392844 |   100.00 | NULL                      |
    |  1 | SIMPLE      | lineitem  | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 1348211 |   100.00 | Parallel scan (4 workers) |
    +----+-------------+-----------+------------+------+---------------+------+---------+------+---------+----------+---------------------------+
    2 rows in set, 1 warning (0.05 sec)
    

    Extra列有Parallel scan,則表示當(dāng)前SQL語(yǔ)句可以并行執(zhí)行。

  2. 創(chuàng)建導(dǎo)出的OSS Server,此處以創(chuàng)建outserver為例。

    CREATE SERVER outserver FOREIGN DATA WRAPPER oss OPTIONS ( EXTRA_SERVER_INFO '{"oss_endpoint": "oss-cn-zhangjiakou.aliyuncs.com", "oss_bucket": "polardb", "oss_access_key_id": "*******", "oss_access_key_secret": "********", "oss_prefix":"B_outfile"}');
  3. 執(zhí)行以下命令,查看并行導(dǎo)出的SQL語(yǔ)句的執(zhí)行計(jì)劃,以確定是否能將本地表并行導(dǎo)出至OSS引擎。

    EXPLAIN SELECT /*+parallel(4)*/ * FROM lineitem INTO OSSOUTFILE 'outserver/t1.CSV' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';

    執(zhí)行計(jì)劃如下:

    +----+-------------+-----------+------------+------+---------------+------+---------+------+---------+----------+--------------------------------------------------------+
    | id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows    | filtered | Extra                                                  |
    +----+-------------+-----------+------------+------+---------------+------+---------+------+---------+----------+--------------------------------------------------------+
    |  1 | SIMPLE      | <gather1> | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 5805759 |   100.00 | Parallel export OSS outfile                            |
    |  1 | SIMPLE      | lineitem  | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 1451439 |   100.00 | Parallel scan (4 workers); Parallel export OSS outfile |
    +----+-------------+-----------+------------+------+---------------+------+---------+------+---------+----------+--------------------------------------------------------+
    2 rows in set, 1 warning (0.03 sec)
    • 若執(zhí)行計(jì)劃的Extra列中有Parallel export OSS outfile,則表示可以將本地表并行導(dǎo)出至OSS引擎。

    • 若執(zhí)行計(jì)劃中不支持并行導(dǎo)出。您可以通過(guò)以下方法查看原因:

      1. OPTIMIZER_TRACE參數(shù)設(shè)置為ON

        SET optimizer_trace="enabled=on";
      2. 執(zhí)行以下命令,查看并行導(dǎo)出的SQL語(yǔ)句的執(zhí)行計(jì)劃。

        EXPLAIN SELECT /*+parallel(4)*/ * FROM lineitem WHERE l_orderkey < 100 INTO OSSOUTFILE 'default_oss_server/t1' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';

        執(zhí)行結(jié)果如下:

        +----+-------------+-----------+------------+-------+----------------------+---------+---------+------+------+----------+----------------------------------------+
        | id | select_type | table     | partitions | type  | possible_keys        | key     | key_len | ref  | rows | filtered | Extra                                  |
        +----+-------------+-----------+------------+-------+----------------------+---------+---------+------+------+----------+----------------------------------------+
        |  1 | SIMPLE      | <gather1> | NULL       | ALL   | NULL                 | NULL    | NULL    | NULL |  105 |   100.00 | NULL                                   |
        |  1 | SIMPLE      | lineitem  | NULL       | range | PRIMARY,i_l_orderkey | PRIMARY | 4       | NULL |   26 |   100.00 | Parallel scan (4 workers); Using where |
        +----+-------------+-----------+------------+-------+----------------------+---------+---------+------+------+----------+----------------------------------------+
        2 rows in set, 1 warning (0.00 sec)
      3. 執(zhí)行以下命令,查看并行導(dǎo)出的SQL語(yǔ)句的Optimizer Trace。

        SELECT * FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;

        執(zhí)行結(jié)果如下:

        ```
         "considered_parallel_outfile": {
                              "choose": false,
                              "storage": "OSS",
                              "format": "CSV",
                              "mean_outfile_record_length": "79 B",
                              "estimate_single_worker_outfile_size": "8 KB",
                              "cause": "The data written by each worker should be greater than 1024 KB (pq_oss_min_worker_write_size)."
                            }
                          }
        ```

        您可以在執(zhí)行結(jié)果的cause參數(shù)值中查看不能并行導(dǎo)出的原因。

  4. 執(zhí)行以下命令,將本地表并行導(dǎo)出至OSS引擎。

    SELECT /*+parallel(4)*/ * FROM lineitem INTO OSSOUTFILE 'outserver/t1.CSV' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';

    導(dǎo)出過(guò)程中,您可以通過(guò)以下命令查看當(dāng)前導(dǎo)出任務(wù)實(shí)時(shí)占用的總內(nèi)存數(shù)和總線程數(shù)。

    • 查看導(dǎo)出任務(wù)實(shí)時(shí)占用的總內(nèi)存數(shù),單位為字節(jié)。

      SHOW STATUS LIKE "%Oss_outfile_memory_used%";
    • 查看導(dǎo)出任務(wù)實(shí)時(shí)占用的總線程數(shù)。

      SHOW STATUS LIKE "%Oss_outfile_threads_running%";
    說(shuō)明

    當(dāng)您連接集群地址執(zhí)行導(dǎo)出任務(wù)時(shí),必須保證SHOW STATUS命令和導(dǎo)出命令在同一個(gè)節(jié)點(diǎn)執(zhí)行,才能查詢當(dāng)前節(jié)點(diǎn)中導(dǎo)出命令占用的內(nèi)存資源信息。