2026 レンタル Mac Mini:ClickHouse と DuckDB 夜間大容量取り込みマトリクス
つまずきやすい点
- スレッド過剰でメモリが不安定。
- 空き不足でマージが連鎖失敗。
- 再試行とログがなく切り分け不能。
シナリオとデータ量の閾値
目安であり保証ではありません。五十ギガ未満はDuckDBでthreads・memory_limit・temp_directoryを固定。五十〜五百ギガは分割取り込み、空き約十五パーセントで黄闸口・約十パーセントで赤闸口として並行を下げる。五百ギガ超や隔離重視はclickhouse-clientでリモートへ、ミニはエッジに。夜間開始はメンテと衝突させず、電源マトリクスと整合させます。
ClickHouse client と DuckDB の対照表
クライアント側キャップ。サーバ制限は別。
| 項目 | ClickHouse client | DuckDB |
|---|---|---|
| 並行度 | --max_threads / --max_insert_threads | SET threads=n; |
| メモリ上限 | --max_memory_usage | SET memory_limit='8GB'; |
| 挿入ブロック | max_insert_block_size(設定) | 分割・LIMIT |
| 一時 IO | サーバ tmp_path | SET temp_directory='/path/tmp'; |
| 闸口時 | 空き低下で一時停止 | threads低下・マージ停止 |
夜間窓・caffeinate・電源
- 固定ウィンドウを台帳化する。
caffeinate -dimsuまたは-i -w PIDでディスク睡眠を避ける。- pmset は承認後のみ。差分を記録。
- 本番レーンは低電力オフ。
- SSH 断は端末睡眠とNATも疑いkeepaliveを確認。
再試行とログローテ
チャンク単位でマニフェストを冪等化。再試行は上限付きバックオフ+ジッター。ログは日付ファイル+newsyslog/logrotate(ログローテ稿参照)。赤闸口では一時領域とスナップショットを掃除してから再開。
実行例
承認済みのホスト・パスへ置換し、一パーセントで試す。
- ClickHouse client(キャップ付きストリーム)
clickhouse-client --host ch.internal --max_threads 6 --max_memory_usage 7000000000 --query "INSERT INTO db.events FORMAT CSV" < nightly.csv - DuckDB(広い CSV)
duckdb -c "SET threads=6; SET memory_limit='7GB'; SET temp_directory='/Volumes/fast/tmpduck'; COPY events FROM 'nightly.csv' (HEADER true);" - 空き確認
df -h / && diskutil apfs listVolumeGroups赤闸口なら中止。
よくある質問(FAQ)
- テラ級を単一ミニで
- 分割かリモート優先。
- 夜中にメモリで落ちた
- ブロックサイズとthreadsを下げ、サーバ側スピルも確認。
- 購入とログイン
- ログイン不要の場合あり。ヘルプで SSH。
引用三項
- 約十五パーセント=黄闸口で並行を下げる。
- 約十パーセント=赤闸口で新規バルクを止める。
- 一パーセントでドライランしてから本番化。
まとめ:並行・メモリ・闸口・夜間電源の四つが揃うと安定しやすいです。レンタルで先に検証し、問題なければ托管へ。ホーム・料金・購入(ログイン不要可)・ヘルプへ。