如需 AlloyDB 資料欄引擎的概念總覽,請參閱 AlloyDB Omni 資料欄引擎總覽。
啟用資料欄引擎
如要在執行個體上使用資料欄引擎,請將執行個體的 google_columnar_engine.enabled 標記設為 on。
Kubernetes
如要將 google_columnar_engine.enabled 旗標設為 on,請修改資料庫叢集資訊清單,在 primarySpec 區段中新增 parameters 屬性:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "on"
將 CLUSTER_NAME 替換為資料庫叢集的名稱。也就是建立資料庫叢集時所宣告的名稱。
設定資料欄儲存空間大小
在執行個體上啟用單欄式引擎後,AlloyDB Omni 會分配部分執行個體記憶體來儲存單欄式資料。將高速 RAM 專用於資料欄儲存庫,可確保 AlloyDB Omni 盡可能快速存取資料欄資料。
記憶體和儲存空間快取加總,就是資料欄引擎的總容量。
設定記憶體
您可以使用 google_columnar_engine.memory_size_in_mb 標記,將分配大小設為固定大小。
Kubernetes
如要設定 google_columnar_engine.memory_size_in_mb 旗標,請修改資料庫叢集資訊清單,在 primarySpec 區段中新增 parameters 屬性:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
parameters:
google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"
更改下列內容:
CLUSTER_NAME:資料庫叢集名稱。也就是建立資料庫叢集時所宣告的名稱。COLUMN_MEMORY_SIZE:資料欄儲存空間的新大小 (以 MB 為單位),例如256。
設定儲存空間快取
您可以在共用或專用裝置上設定直欄式引擎儲存空間快取。
Kubernetes
共用裝置
如要在共用裝置上為資料庫啟用儲存空間快取,請修改資料庫叢集資訊清單,將 columnarSpillToDisk 屬性新增至 primarySpec 區段的 features 區段:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: STORAGE_CACHE_SIZE
ultraFastCache:
cacheSize: ULTRAFAST_CACHE_SIZE
genericVolume:
storageClass: "STORAGE_CLASS_NAME"
...
更改下列內容:
CLUSTER_NAME:資料庫叢集名稱。也就是建立資料庫叢集時所宣告的名稱。STORAGE_CACHE_SIZE:資料欄儲存空間快取的大小,例如5Gi。如果未指定這個欄位的值,系統預設會將 5% 的磁碟快取分配給直欄引擎。ULTRAFAST_CACHE_SIZE:快取大小,例如100Gi。必須大於shared_buffers。這是選填欄位。如果您未指定這個欄位的值,AlloyDB Omni 會使用磁碟上所有剩餘空間,這適用於容器和 Kubernetes 叢集中的 AlloyDB Omni。如要進一步瞭解計量單位,請參閱「記憶體資源單位」。STORAGE_CLASS_NAME:超高速快取磁碟區的儲存空間類別名稱,例如local-storage。
spec.primarySpec.features.columnarSpillToDisk.cacheSize專用裝置
根據預設,資料欄引擎的儲存空間快取會與 AlloyDB Omni 磁碟快取共用相同裝置。不過,由於下列原因,您可以設定直欄引擎,讓儲存空間快取使用專屬裝置:
- 由於主要儲存空間已使用高效能 SSD,因此不需要磁碟快取。在這種情況下,您可以建立直欄式引擎儲存空間快取,不必為磁碟快取配置任何空間。
- 您想為磁碟快取和直欄引擎快取使用不同的儲存媒體。舉例來說,您可能會想使用標準 SSD 做為磁碟快取,並使用效能更高的 NVMe SSD 做為直欄引擎快取。
使用一般磁碟區
如要為直欄引擎儲存空間快取設定專用裝置,請修改 DBCluster 資訊清單,在 features 區段中新增 columnarSpillToDisk 屬性。然後在 columnarSpillToDisk 中指定 genericVolume,並使用 storageClass 指向要用於專屬直欄式引擎快取的儲存空間。
以下範例說明如何使用名為 local-ssd 的儲存空間類別,為資料欄引擎儲存空間快取設定 50 Gi 專屬裝置:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: STORAGE_CACHE_SIZE
genericVolume:
storageClass: "STORAGE_CLASS_NAME"
更改下列內容:
CLUSTER_NAME:資料庫叢集名稱。也就是建立資料庫叢集時所宣告的名稱。STORAGE_CACHE_SIZE:資料欄儲存空間快取的大小,例如50Gi。如果未指定這個欄位的值,系統預設會將 5% 的磁碟快取分配給直欄引擎。STORAGE_CLASS_NAME:專屬直欄引擎快取磁碟區的儲存空間類別名稱,例如local-ssd。
使用暫時磁碟區
您可以設定資料欄引擎,使用暫時性 emptyDir 磁碟區做為儲存空間快取。系統將 Pod 指派給節點時會建立 emptyDir 磁碟區;只要這個 Pod 仍在該節點上執行,此磁碟區就會繼續保留。當 Pod 從節點移除時,emptyDir 中的資料也會永久刪除。
如要為直欄式儲存空間快取設定 emptyDir 磁碟區,請修改 DBCluster 資訊清單,在 columnarSpillToDisk 區段中新增 emptyDir 屬性。
以下範例說明如何為直欄式儲存空間快取設定臨時磁碟區:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: 50Gi
emptyDir: {}
更改下列內容:
CLUSTER_NAME:資料庫叢集名稱。也就是建立資料庫叢集時所宣告的名稱。STORAGE_CACHE_SIZE:資料欄儲存空間快取的大小,例如50Gi。
啟用向量化聯結
直欄式引擎具有向量化聯結功能,可對符合條件的查詢套用向量化處理,藉此提升聯結效能。
啟用向量化聯結後,AlloyDB 查詢規劃工具可選擇套用向量化聯結運算子,而非標準 PostgreSQL 雜湊聯結運算子。規劃工具會比較使用每種方法執行查詢的費用,藉此做出這項決定。
如要在執行個體上啟用向量化聯結,請將執行個體的 google_columnar_engine.enable_vectorized_join 旗標設為 on。
如要在執行個體上設定這個旗標,請執行 PostgreSQL ALTER SYSTEM 指令:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
根據預設,AlloyDB Omni 會為向量化聯結功能分配一個執行緒。您可以將 google_columnar_engine.vectorized_join_threads 旗標設為較大的值,增加這項功能可用的執行緒數量。最大值為 cpu_count * 2。
手動重新整理資料欄引擎
根據預設,啟用資料欄引擎後,系統會在背景重新整理資料欄儲存空間。
如要手動重新整理資料欄引擎,請執行下列 SQL 查詢:
SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');
將 TABLE_NAME 替換為要手動重新整理的資料表或具體化檢視名稱。
停用資料欄引擎
如要在執行個體上停用 Columbar 引擎,請將 google_columnar_engine.enabled 旗標設為 off。
Kubernetes
如要將 google_columnar_engine.enabled 旗標設為 off,請修改資料庫叢集資訊清單,在 primarySpec 區段中新增 parameters 屬性:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "off"
將 CLUSTER_NAME 替換為資料庫叢集的名稱。也就是建立資料庫叢集時所宣告的名稱。
後續步驟
請參閱資料庫旗標的完整清單。
完成 Accelerating analytical queries with columnar engine in AlloyDB Omni Google CodeLab 教學課程。