重要なシステムテーブル
system.errors
system.replicas
system.replication_queue
system.merges
system.parts
本番環境でよくある問題
ディスク容量の問題
パーツが多すぎるエラー
- 30 秒または 200MB をしきい値としてデータをバッチ化する
- 自動バッチ化のために async_insert を有効にする
- サーバー側でバッチ化するために buffer table を使用する
- バッチサイズを制御できるように Kafka を設定する
無効なタイムスタンプに関する問題
ALTER 操作のリスク
ALTER 操作は、多くのリソースを消費し、場合によってはデータベースをロックしてしまうことがあります。コミュニティで共有されたある事例では、14TB のデータで Integer を Float に変更した結果、データベース全体がロックされ、バックアップから再構築する必要が生じました。
負荷の高いミューテーションを監視する:
メモリとパフォーマンス
外部集約
max_bytes_before_external_group_by を使用します。これは、大規模な GROUP BY 操作でメモリ不足によるクラッシュを防ぐのに役立ちます。この設定の詳細はこちらをご覧ください。
非同期 INSERT の詳細
分散テーブルの設定
insert_distributed_sync を有効にします。
分散テーブルを使用する際は、一時データの蓄積を監視してください。
パフォーマンス監視のしきい値
- パーティションあたりのパーツ数: できれば 100 未満
- 挿入遅延: 0 を維持すること
- 挿入レート: 最適なパフォーマンスのため、1 秒あたりおよそ 1 回までに抑える