全部產品
Search
文件中心

Realtime Compute for Apache Flink:AUTO OPTIMIZE語句

更新時間:Jul 13, 2024

通過AUTO OPTIMIZE語句,將啟動一個流式最佳化任務,自動地對外部資料湖的表進行最佳化。本文為您介紹AUTO OPTIMIZE語句的背景資訊、前提條件、使用限制、注意事項、基本文法和參數配置。

背景資訊

  • 功能詳情

    目前僅支援將Iceberg表的若干小檔案重寫為大檔案,將小檔案重寫成大檔案有利於減輕中繼資料的負載和提高查詢效率。啟動該最佳化任務後,該任務將定時檢查指定的Iceberg表。如果表分區下存在多個小檔案,則會將這些小檔案重寫成為大檔案。當您的Iceberg表的讀效能瓶頸是因為存在大量小檔案時,建議啟動該最佳化任務以提高Iceberg的讀效能。

  • 功能特性
    功能詳情
    最佳化單個表對指定的表進行最佳化。
    最佳化單個資料庫對指定的資料庫下的所有表進行最佳化。
  • 最佳化流程
    當執行AUTO OPTIMIZE語句時,阿里雲Flink將會按照以下流程執行:
    1. 檢查要最佳化的表或者資料庫是否存在,如果不存在則會報錯。
    2. 持續監控對應的表,如果表滿足對應的最佳化條件,則會對錶進行最佳化。

前提條件

執行AUTO OPTIMIZE語句來最佳化表或者資料庫前,需要保證在Flink全託管開發控制台上已經註冊了對應的表或者資料庫。註冊方式詳情請參見資料湖Iceberg結果表

使用限制

  • 僅Flink計算引擎vvr-4.0.12-flink-1.13及以上版本支援AUTO OPTIMIZE語句。
  • 目前僅支援將Iceberg表的若干小檔案重寫為大檔案。
  • 僅支援最佳化包含了Iceberg表的資料庫。如果資料庫中除了Iceberg表,還包含了其他類型的表,則不支援最佳化該資料庫。
    說明 您可以將這些需要最佳化的Iceberg表都註冊到一個新的資料庫中,然後最佳化該新的資料庫。

注意事項

啟動AUTO OPTIMIZE最佳化任務後,將會佔用一定的網路頻寬和Flink全託管的CU資源,但不會刪除被重寫的小檔案,需要配合Iceberg的SnapShot到期機制來刪除這些被重寫的小檔案。

基本文法

  • 最佳化單個表
    AUTO OPTIMIZE TABLE <target_table>
    <target_table>:
      [catalog_name.][db_name.]table_name
  • 最佳化單個資料庫
    AUTO OPTIMIZE DATABASE <target_database>
    <target_database>:
      [catalog_name.]db_name

參數配置

  • 配置方式
    您可以使用如下命令來設定相關參數:
    ALTER TABLE <target_table> SET ('auto-optimize.rewrite.enable' = 'false');
    <target_table>:
      [catalog_name.][db_name.]table_name
    說明 對於基於記憶體的Catalog下的Iceberg表 ,不支援直接在Flink開發控制台通過ALTER命令來修改表參數。但其他類型的Catalog下的表都可以修改表參數。
  • 參數說明
    類別參數說明單位和預設值
    表監控相關參數auto-optimize.table-monitor.interval每隔多長時間對錶進行一次監控來判斷是不是應該對錶進行最佳化。
    您可以根據您的期望,設定該參數值的大小。建議如下:
    • 如果您期望儘早對錶進行最佳化,可以將該值設定得小一點。
    • 如果您期望減少表最佳化的頻率,可以將該值設定得大一點。
    • 單位是毫秒。
    • 預設值是600000,即10分鐘。
    表最佳化相關參數auto-optimize.rewrite.enable是否開啟檔案重寫的功能。參數取值如下:
    • true(預設值):開啟檔案重寫的功能。
    • false:不開啟檔案重寫的功能。

      如果您需要最佳化單個資料庫,但不希望最佳化資料庫中的某些表,可以將這些表的該參數設定為false。

    不涉及
    auto-optimize.rewrite.target-file-size-bytes將檔案重寫至多大size的檔案。
    • 單位是byte。
    • 預設值為536870912,即512 MB。