✓データ更新 ✓UPDATE 文/DELETE 文/MERGE 文は実行不可 postgres=> DELETE FROM citus1 WHERE c1=0; ERROR: UPDATE and CTID scans not supported for ColumnarScan postgres=> UPDATE citus1 SET c2='update' WHERE c1=0; ERROR: UPDATE and CTID scans not supported for ColumnarScan postgres=> MERGE INTO citus1 AS c USING data1 AS d ON c.c1 = d.c1 WHEN MATCHED THEN DO NOTHING; ERROR: UPDATE and CTID scans not supported for ColumnarScan ✓その他 ✓インデックス利用可能 ✓主キー、一意キー、NOT NULL 等制約も利用可能
✓並列処理したければ citus エクステンションの分散テーブル(Distributed Table)を利用 Worker#1 Worker#2 Worker#3 citus citus citus Coordinator citus "ABC" "DEF" "GHI" "ABC" "DEF" "GHI" Shard Replica
✓その他オプションの指定 オプション 説明 デフォルト 設定範囲 columnar.column_cache_size 列キャッシュのサイズ(MB) 200MB 20MB ~ 20000MB columnar.enable_column_cache 列キャッシュの有効化 off off ~ on columnar.min_parallel_processes 最小パラレルプロセス数 8 1 ~ 32 columnar.enable_parallel_execution パラレルクエリー有効化 on off ~ on columnar.enable_vectorization ベクトル化の有効化 on off ~ on columnar.enable_dml DELETE/UPDATE 無効 on off ~ on columnar.enable_columnar_index_scan カスタム索引スキャン off off ~ on columnar.planner_debug_level デバッグレベル指定 debug3 debug5 ~ log
✓独自のインデックス・スキャン(デフォルト無効) postgres=> EXPLAIN SELECT * FROM hydra1 WHERE c1=10000; QUERY PLAN --------------------------------------------------------------------------- Index Scan using hydra1_pkey on hydra1 (cost=0.43..59.96 rows=1 width=9) Index Cond: (c1 = 10000) (2 rows) postgres=> SET columnar.enable_columnar_index_scan = on; SET postgres=> EXPLAIN SELECT * FROM hydra1 WHERE c1=10000; QUERY PLAN ------------------------------------------------------------------- Custom Scan (ColumnarIndexScan) (cost=0.43..8.45 rows=1 width=9) ColumnarIndexScan using : hydra1_pkey Index Cond: (c1 = 10000) (3 rows)