句
IF NOT EXISTS
db_name データベースがすでに存在する場合、ClickHouse は新しいデータベースを作成せず、次のように動作します。
- この句が指定されている場合、例外はスローされません。
- この句が指定されていない場合、例外がスローされます。
ON CLUSTER
ClickHouse は、指定したクラスターを構成するすべてのサーバー上にdb_name データベースを作成します。詳しくは、Distributed DDL を参照してください。
エンジン
デフォルトでは、ClickHouse は独自の Atomic データベースエンジンを使用します。これ以外にも、MySQL、PostgresSQL、MaterializedPostgreSQL、Replicated、SQLite などがあります。コメント
データベースの作成時にコメントを追加できます。 コメントは、すべてのデータベースエンジンでサポートされています。 構文Query
Response
SETTINGS
SETTINGS 句は ENGINE 句なしで使用でき、その場合はデフォルトのデータベースエンジン (Atomic) が使用されます。この句にはデータベースエンジンの設定と通常のクエリ設定の両方を指定でき、各名前はそれぞれが属する方へ送出されます。
disk
データベースのテーブルメタデータファイルを保存するために使用するディスクです。サーバー設定で定義済みのディスクを名前で指定することも、単一のテーブルの場合と同様にdisk 関数を使ってインラインで定義することもできます:
Atomic、Ordinary) に適用されます。指定しない場合は、
database_disk.disk サーバー設定で定義されたディスクが使用されます。
lazy_load_tables
有効にすると、データベースの起動時にテーブルは完全には読み込まれません。代わりに、各テーブルに対して軽量なプロキシが作成され、実際のテーブルエンジンは最初のアクセス時に実体化されます。これにより、多数のテーブルを含み、実際にクエリされるのがその一部に限られるデータベースで、起動時間とメモリ使用量を削減できます。Atomic、Ordinary) に適用されます。ビュー、materialized view、辞書、Alias テーブル、TimeSeries テーブル、およびテーブル関数を使用するテーブルは、この設定に関係なく常に即座にロードされます。
使用するケース: この設定は、多数のテーブル (数百〜数千) があり、そのうち一部だけが実際にクエリされるデータベースで有用です。テーブルエンジンオブジェクトの生成、データパーツのスキャン、バックグラウンドスレッドの初期化を最初のアクセスまで遅らせることで、サーバーの起動時間とメモリ使用量を削減します。
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 (無効) 。