本頁說明如何手動新增及移除資料欄,藉此管理直欄引擎的直欄存放區內容。
您可以根據工作負載,手動將資料欄新增至資料欄存放區,或從資料欄存放區捨棄資料表或具體化檢視區的部分或所有資料欄。查詢評估作業會自動使用儲存的資料欄資料來回答查詢。
選擇要新增至資料欄存放區的資料表、具體化檢視區塊和資料欄時,請同時考量資料欄存放區的大小和工作負載的形狀。適合選取的項目包括經常掃描的大型資料表或檢視區塊。在這些資料表或檢視區塊中,找出 OLAP 工作負載使用的任何大型非專屬索引。您可以將這些索引的資料欄新增至資料欄存放區,並可能捨棄索引,進而消除與主要執行個體維護相關的效能成本。
如要管理資料欄引擎資料欄儲存區的內容,請使用下列其中一種方法:
如要瞭解在資料欄商店中新增表格、資料欄和具體化檢視區塊時,可以使用哪些資料類型和資料來源,請參閱「可新增至資料欄商店的資料」。
事前準備
- 您必須在使用的 Google Cloud 專案中擁有下列其中一個 IAM 角色:
roles/alloydb.admin
(AlloyDB 管理員預先定義的 IAM 角色)roles/owner
(擁有者基本 IAM 角色)roles/editor
(編輯者基本 IAM 角色)
如果您不具備上述任一角色,請與機構管理員聯絡,並要求存取權。
更新資料庫旗標,管理資料欄存放區內容
您可以更新 google_columnar_engine.relations
資料庫旗標,手動管理資料欄存放區內容。這個旗標只有一個值,可指定所有資料欄商店的資料來源。重新啟動期間,系統會自動將這個標記中指定的資料欄填入資料欄存放區。
您可以搭配自動欄狀化使用這個標記。如果資料欄引擎在透過 google_columnar_engine.relations
標記填入您指定的資料欄後,仍有可用記憶體,自動資料欄化功能就會視需要將更多資料欄新增至資料欄存放區。
如要進一步瞭解如何使用 Google Cloud CLI 或 Google Cloud 控制台設定執行個體的資料庫旗標,請參閱「設定執行個體的資料庫旗標」。
使用標記新增資料欄
如要將資料欄新增至資料欄存放區,請定義執行個體的 google_columnar_engine.relations
標記。將值設為以半形逗號分隔的項目清單,每個項目指定要從特定資料表納入的資料欄清單,格式如下:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)
更改下列內容:
DATABASE_NAME:包含要新增至資料欄存放區的資料欄的資料庫。
SCHEMA_NAME:識別要新增至資料欄存放區的資料表或具體化檢視區塊的結構定義,例如
public
。TABLE_NAME:包含要新增至資料欄存放區的資料欄的資料表或具體化檢視區塊。
COLUMN_LIST:以逗號分隔的清單,當中列有要新增至資料欄存放區的資料欄。
如要新增資料表或具體化檢視表的所有資料欄,請省略資料欄清單:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
如要進一步瞭解如何設定執行個體的資料庫旗標,請參閱「設定執行個體的資料庫旗標」。
指令列語法注意事項
如果您使用 Google Cloud CLI 設定 google_columnar_engine.relations
旗標,則必須使用替代分隔符號語法,分隔您設定的資料庫旗標。這是因為資料欄清單是以逗號分隔,因此在同一個指令列引數中指定旗標時,您必須使用非逗號字元。
以下範例說明如何使用 gcloud CLI,在 public
結構定義中將兩個資料欄新增至資料欄存放區。這個範例會設定個別的旗標來啟用資料欄引擎,因為使用gcloud alloydb instance update
指令設定任何資料庫旗標時,也必須設定所有要使用非預設值的其他資料庫旗標,即使這些旗標已設定也一樣。
gcloud alloydb instances update INSTANCE_NAME \
--database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
--region=REGION_ID \
--cluster=CLUSTER_ID
使用標記捨棄資料欄
如要從資料欄存放區捨棄資料欄,請為上一節所述的 google_columnar_engine.relations
旗標設定新值,並省略要捨棄的資料欄。
如要從資料欄商店捨棄所有資料欄,請從執行個體取消設定 google_columnar_engine.relations
旗標。
如要進一步瞭解如何設定執行個體的資料庫旗標,請參閱「設定執行個體的資料庫旗標」。
使用 SQL 函式管理資料欄儲存區內容
您可以使用 SQL 函式手動管理資料欄儲存區內容。
使用 SQL 函式新增資料欄
執行 google_columnar_engine_add
SQL 函式,將資料欄新增至資料欄存放區。
這個方法會將指定資料欄新增至資料欄存放區,並僅管理連線節點中的資料欄。重新啟動執行個體後,新欄位不會保留在商店中。
這個方法不會變更資料庫標記 google_columnar_engine.relations
。自動欄狀化不會考量這個 SQL 函式新增的資料欄。
psql 用戶端
SELECT google_columnar_engine_add( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
-
取代下列項目:
- 「TABLE_NAME」:包含資料表或具體化檢視表名稱的字串。如果資料表或檢視區塊位於
public
以外的結構定義中,請指定結構定義的名稱、半形句號,以及資料表或檢視區塊的名稱,例如'myschema.mytable'
。 - 「COLUMN_LIST」:字串,內含以半形逗號分隔的清單,列出要新增的資料欄名稱 (區分大小寫)。如要將資料表或具體化檢視區塊的所有資料欄新增至資料欄存放區,請省略這個參數。
使用 SQL 函式捨棄資料欄
執行 google_columnar_engine_drop
SQL 函式,如下所示:
psql 用戶端
SELECT google_columnar_engine_drop( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
- 「TABLE_NAME」:包含資料表或具體化檢視表名稱的字串。如果資料表或檢視區塊位於
public
以外的結構定義中,請指定結構定義的名稱、半形句號,以及資料表或檢視區塊的名稱,例如'myschema.mytable'
。 - 「COLUMN_LIST」:字串,內含以半形逗號分隔的清單,列出要新增的資料欄名稱 (區分大小寫)。如要將資料表或具體化檢視區塊的所有資料欄新增至資料欄存放區,請省略這個參數。
您可以使用 google_columnar_engine_drop
函式移除透過編輯 google_columnar_engine.relations
資料庫標記新增的資料欄。不過,這麼做的話,當執行個體重新啟動時,這些資料欄會重新加入直欄式存放區。