句
IF NOT EXISTS
db_name データベースがすでに存在する場合、ClickHouse は新しいデータベースを作成せず、次のように動作します。
- この句が指定されている場合、例外はスローされません。
- この句が指定されていない場合、例外がスローされます。
ON CLUSTER
db_name データベースを作成します。詳しくは、Distributed DDL を参照してください。
エンジン
コメント
Query
Response
設定
lazy_load_tables
Atomic、Ordinary) に適用されます。ビュー、materialized view、辞書、およびテーブル関数を使用するテーブルは、この設定に関係なく常に即座にロードされます。
使用するケース: この設定は、多数のテーブル (数百〜数千) があり、そのうち一部だけが実際にクエリされるデータベースで有用です。テーブルエンジンオブジェクトの生成、データパーツのスキャン、バックグラウンドスレッドの初期化を最初のアクセスまで遅らせることで、サーバーの起動時間とメモリ使用量を削減します。
system.tables への影響:
- テーブルにアクセスされる前は、
system.tablesではそのエンジンがTableProxyとして表示されます。最初のアクセス後は、実際のエンジン名 (例:MergeTree) が表示されます。 total_rowsやtotal_bytesなどのカラムは、実際のストレージがまだ作成されていないため、未ロードのテーブルではNULLを返します。
SELECT、INSERT、ALTER、DROPは、最初に使用された時点で実際のテーブルエンジンのロードを透過的にトリガーします。RENAME TABLEはロードをトリガーせずに動作します。- テーブルはいったんロードされると、サーバープロセスの存続中はロードされたままになります。
system.tablesのメタデータ (例:total_rows、engine) に依存する監視ツールでは、未ロードのテーブルについて不完全な情報が表示される場合があります。- 未ロードのテーブルに対する最初のクエリでは、一回限りのロードコスト (保存された
CREATE TABLEステートメントのパースとエンジンの初期化) が発生します。
0 (無効) 。