> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# iceberg_compaction_* session settings

> ClickHouse session settings in the iceberg_compaction_* generated group.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Version", "Default value", "Comment"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        Version history
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Default</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Changeable without restart
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

These settings are available in [system.settings](/reference/system-tables/settings) and are autogenerated from [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<h2 id="iceberg_compaction_commit_batch_size">
  iceberg\_compaction\_commit\_batch\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "100"},{"label": "New setting"}]}, {"id": "row-2","items": [{"label": "26.8"},{"label": "100"},{"label": "New setting"}]}]} />

Number of merged data files that background Iceberg compaction accumulates before publishing them in a new snapshot.

Compaction results are published in any case once there are no candidates left to compact, so this setting only bounds
how long already merged files stay unpublished while compaction keeps finding new work. `0` restores the old behaviour
of publishing only when compaction runs out of candidates - a state that is never reached while the table keeps
receiving new data files, so every merged output is then written to object storage and never referenced by a snapshot.

<h2 id="iceberg_compaction_data_cleanup">
  iceberg\_compaction\_data\_cleanup
</h2>

<SettingsInfoBlock type="Seconds" default_value="10800" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10800"},{"label": "New setting"}]}]} />

The time after which the data will be deleted.

<h2 id="iceberg_compaction_delay_bias">
  iceberg\_compaction\_delay\_bias
</h2>

<SettingsInfoBlock type="Seconds" default_value="10800" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "10800"},{"label": "New setting"}]}]} />

Minimum time of delay between 2 background compaction operations.

<h2 id="iceberg_compaction_max_bytes_in_data_file">
  iceberg\_compaction\_max\_bytes\_in\_data\_file
</h2>

<SettingsInfoBlock type="UInt64" default_value="18446744073709551615" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "18446744073709551615"},{"label": "New setting for the max bytes of an iceberg data file produced by compaction, separate from the insert-time limit."}]}, {"id": "row-2","items": [{"label": "26.7"},{"label": "18446744073709551615"},{"label": "New setting for the max bytes of an iceberg data file produced by compaction, separate from the insert-time limit."}]}]} />

Max bytes of an iceberg parquet data file produced by compaction. Defaults to the maximum so that compaction merges eligible files into as few output files as possible.

<h2 id="iceberg_compaction_max_rows_in_data_file">
  iceberg\_compaction\_max\_rows\_in\_data\_file
</h2>

<SettingsInfoBlock type="UInt64" default_value="18446744073709551615" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "18446744073709551615"},{"label": "New setting for the max rows of an iceberg data file produced by compaction, separate from the insert-time limit."}]}, {"id": "row-2","items": [{"label": "26.7"},{"label": "18446744073709551615"},{"label": "New setting for the max rows of an iceberg data file produced by compaction, separate from the insert-time limit."}]}]} />

Max rows of an iceberg parquet data file produced by compaction. Defaults to the maximum so that compaction merges eligible files into as few output files as possible. Keeping this above the size compaction can actually produce would make every output file stay below `iceberg_data_file_size_lower_threshold_compaction` and be re-selected forever.
