ClickHouse/docs/ja/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-lifetime.md
Ivan Blinkov cd14f9ebcb
SQL reference refactoring (#10857)
* split up select.md

* array-join.md basic refactoring

* distinct.md basic refactoring

* format.md basic refactoring

* from.md basic refactoring

* group-by.md basic refactoring

* having.md basic refactoring

* additional index.md refactoring

* into-outfile.md basic refactoring

* join.md basic refactoring

* limit.md basic refactoring

* limit-by.md basic refactoring

* order-by.md basic refactoring

* prewhere.md basic refactoring

* adjust operators/index.md links

* adjust sample.md links

* adjust more links

* adjust operatots links

* fix some links

* adjust aggregate function article titles

* basic refactor of remaining select clauses

* absolute paths in make_links.sh

* run make_links.sh

* remove old select.md locations

* translate docs/es

* translate docs/fr

* translate docs/fa

* remove old operators.md location

* change operators.md links

* adjust links in docs/es

* adjust links in docs/es

* minor texts adjustments

* wip

* update machine translations to use new links

* fix changelog

* es build fixes

* get rid of some select.md links

* temporary adjust ru links

* temporary adjust more ru links

* improve curly brace handling

* adjust ru as well

* fa build fix

* ru link fixes

* zh link fixes

* temporary disable part of anchor checks
2020-05-15 07:34:54 +03:00

3.5 KiB

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 42 辞書の更新

辞書の更新

ClickHouseは定期的に辞書を更新します。 完全にダウンロードされた辞書の更新間隔と、キャッシュされた辞書の無効化間隔は、 <lifetime> 秒単位のタグ。

辞書の更新(最初の使用のための読み込み以外)は、クエリをブロックしません。 更新時には、古いバージョンの辞書が使用されます。 更新中にエラーが発生すると、エラーはサーバーログに書き込まれ、クエリは古いバージョンの辞書を使用し続けます。

設定例:

<dictionary>
    ...
    <lifetime>300</lifetime>
    ...
</dictionary>
CREATE DICTIONARY (...)
...
LIFETIME(300)
...

設定 <lifetime>0</lifetime> (LIFETIME(0))辞書の更新を防ぎます。

しかしながら、セッションの時間間隔のアップグレード、ClickHouseを選定しランダム均一に時間以内であることが判明した。 これは、多数のサーバーでアップグレードするときに辞書ソースの負荷を分散するために必要です。

設定例:

<dictionary>
    ...
    <lifetime>
        <min>300</min>
        <max>360</max>
    </lifetime>
    ...
</dictionary>

または

LIFETIME(MIN 300 MAX 360)

もし <min>0</min><max>0</max>,ClickHouseはタイムアウトによって辞書をリロードしません。 この場合、clickhouseは辞書設定ファイルが変更された場合、または SYSTEM RELOAD DICTIONARY コマンドが実行された。

ップする場合には辞書にClickHouseサーバーに適用の異なるロジックの種類によって ソース:

ップする場合には辞書にClickHouseサーバーに適用の異なるロジックの種類によって ソース:

  • テキストファイルの場合、変更の時刻をチェックします。 時刻が以前に記録された時刻と異なる場合、辞書が更新されます。
  • MyISAMテーブルの場合、変更時刻は SHOW TABLE STATUS クエリ。
  • 他のソースからの辞書は、デフォルトで毎回updatedされます。

MySQL(InnoDB)、ODBC、およびClickHouseソースでは、毎回ではなく、実際に変更された場合にのみ辞書を更新するクエリを設定できます。 これを行うには、次の手順に従います:

  • 辞書テーブルには、ソースデータの更新時に常に変更されるフィールドが必要です。
  • ソースの設定では、変更フィールドを取得するクエリを指定する必要があります。 ClickHouseサーバーは、クエリ結果を行として解釈し、この行が以前の状態に対して相対的に変更された場合、辞書が更新されます。 のクエリを指定します。 <invalidate_query> の設定のフィールド ソース.

設定例:

<dictionary>
    ...
    <odbc>
      ...
      <invalidate_query>SELECT update_time FROM dictionary_source where id = 1</invalidate_query>
    </odbc>
    ...
</dictionary>

または

...
SOURCE(ODBC(... invalidate_query 'SELECT update_time FROM dictionary_source where id = 1'))
...

元の記事