Improve index creation by MERGE statement for large target tables
Details
| Detail name | Value |
|---|---|
| Changelog Number | 5545 |
| Type | Improvement |
| Status | Resolved |
| Fix Versions | Exasol 6.0.14, Exasol 6.1.1 |
| Resolution Date | 2018-11-27 |
Problem Description
In 6.0.0 we introduced MERGE enhancements for large target tables (see EXASOL-1788).
However, the new MERGE logic has the drawback that it creates indexes on the target table to execute the most efficient join from the source-table to the target-table. Depending on size and distribution keys of the source-table and target-table, over time an established merge-process might add both a LOCAL and a GLOBAL index on the target table.
In some cases those indexes alone will take a significant part of the DBRAM and might produce index maintenance cost if not used.
Improvement
We will treat smaller and larger source tables identically when merging into large target tables. Smaller source tables no longer use a local merge unless the same source table with more data could do a local merge as well. This way only a single index type (LOCAL or GLOBAL) is created by several MERGE-statements with same target table and structurally identical source tables.
For scenarios without large target tables nothing is changed.
Changed behavior
Some MERGE-statements with small source tables could be slower. The behaviour can be switched back to previous logic if that is a problem.