mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-20 23:41:01 +00:00
bcab45b3fc
* Update of english version of descriprion of the table function `file`. * New syntax for ReplacingMergeTree. Some improvements in text. * Significantly change article about SummingMergeTree. Article is restructured, text is changed in many places of the document. New syntax for table creation is described. * Descriptions of AggregateFunction and AggregatingMergeTree are updated. Russian version. * New syntax for new syntax of CREATE TABLE * Added english docs on Aggregating, Replacing and SummingMergeTree. * CollapsingMergeTree docs. English version. * 1. Update of CollapsingMergeTree. 2. Minor changes in markup * Update aggregatefunction.md * Update aggregatefunction.md * Update aggregatefunction.md * Update aggregatingmergetree.md * GraphiteMergeTree docs update. New syntax for creation of Replicated* tables. Minor changes in *MergeTree tables creation syntax. * Markup fix * Markup and language fixes * Clarification in the CollapsingMergeTree article * DOCAPI-4821. Sync between ru and en versions of docs. * Fixed the ambiguity in geo functions description. * Example of JOIN in ru docs * Deleted misinforming example.
62 lines
2.5 KiB
Markdown
62 lines
2.5 KiB
Markdown
<a name="dicts-external_dicts_dict_lifetime"></a>
|
|
|
|
# Dictionary Updates
|
|
|
|
ClickHouse periodically updates the dictionaries. The update interval for fully downloaded dictionaries and the invalidation interval for cached dictionaries are defined in the `<lifetime>` tag in seconds.
|
|
|
|
Dictionary updates (other than loading for first use) do not block queries. During updates, the old version of a dictionary is used. If an error occurs during an update, the error is written to the server log, and queries continue using the old version of dictionaries.
|
|
|
|
Example of settings:
|
|
|
|
```xml
|
|
<dictionary>
|
|
...
|
|
<lifetime>300</lifetime>
|
|
...
|
|
</dictionary>
|
|
```
|
|
|
|
Setting ` <lifetime> 0</lifetime> ` prevents updating dictionaries.
|
|
|
|
You can set a time interval for upgrades, and ClickHouse will choose a uniformly random time within this range. This is necessary in order to distribute the load on the dictionary source when upgrading on a large number of servers.
|
|
|
|
Example of settings:
|
|
|
|
```xml
|
|
<dictionary>
|
|
...
|
|
<lifetime>
|
|
<min>300</min>
|
|
<max>360</max>
|
|
</lifetime>
|
|
...
|
|
</dictionary>
|
|
```
|
|
|
|
When upgrading the dictionaries, the ClickHouse server applies different logic depending on the type of [ source](external_dicts_dict_sources.md#dicts-external_dicts_dict_sources):
|
|
|
|
- For a text file, it checks the time of modification. If the time differs from the previously recorded time, the dictionary is updated.
|
|
- For MyISAM tables, the time of modification is checked using a `SHOW TABLE STATUS` query.
|
|
- Dictionaries from other sources are updated every time by default.
|
|
|
|
For MySQL (InnoDB), ODBC and ClickHouse sources, you can set up a query that will update the dictionaries only if they really changed, rather than each time. To do this, follow these steps:
|
|
|
|
- The dictionary table must have a field that always changes when the source data is updated.
|
|
- The settings of the source must specify a query that retrieves the changing field. The ClickHouse server interprets the query result as a row, and if this row has changed relative to its previous state, the dictionary is updated. Specify the query in the `<invalidate_query>` field in the settings for the [source](external_dicts_dict_sources.md#dicts-external_dicts_dict_sources).
|
|
|
|
Example of settings:
|
|
|
|
```xml
|
|
<dictionary>
|
|
...
|
|
<odbc>
|
|
...
|
|
<invalidate_query>SELECT update_time FROM dictionary_source where id = 1</invalidate_query>
|
|
</odbc>
|
|
...
|
|
</dictionary>
|
|
```
|
|
|
|
|
|
[Original article](https://clickhouse.yandex/docs/en/query_language/dicts/external_dicts_dict_lifetime/) <!--hide-->
|