本頁面介紹一般最佳做法,有助於提升 AlloyDB for PostgreSQL 的效能、耐久性和可用性。本頁內容適用於已熟悉 AlloyDB 和 PostgreSQL 的資料庫管理員和開發人員。
執行個體設定與管理
使用 AlloyDB 工具監控資料庫用量和狀態。
遵循操作指南。
設定主要執行個體的維護期間。
新增讀取集區執行個體,分擔讀取流量。
管理複製延遲。
前一項作業完成之前,請勿開始進行管理作業。
設定足夠的儲存空間配額,以因應重要的資料庫維護作業。
避免 CPU 使用率過高。
避免記憶體耗盡。
確認執行個體具有最佳交易 ID。
使用 AlloyDB 工具監控資料庫用量和狀態
下表列出 AlloyDB 工具,可協助您監控資料庫用量、狀態和效能。
AlloyDB 工具 | 說明 |
---|---|
成效快照報表 | 比較兩個不同時間點的系統指標快照。 |
查詢洞察 | 協助您偵測、診斷及預防 AlloyDB 資料庫的查詢效能問題。這項功能提供自助式直覺化監控工具和診斷資訊,協助您在偵測到效能問題後,進一步找出根本原因。 |
系統深入分析 | 可監控資料庫資源和指標,包括現有節點數量、CPU 使用率、尖峰連線數、記錄錯誤、每秒交易數和最大複寫延遲。 |
遵循操作指南
如要確保執行個體在 PostgreSQL 適用的 AlloyDB 服務水準協議涵蓋範圍內,請遵守操作指南。
設定主要執行個體的維護期間
設定主要執行個體的維護期間,以便規劃發生中斷型更新的時間。詳情請參閱「查看及設定維護時間」。
新增讀取集區執行個體,分擔讀取流量
如果是需要讀取大量資料的工作負載,請新增讀取集區執行個體,以分擔主要執行個體的讀取流量。
為執行個體中的每個資料庫設定一或多個讀取集區,有助於提升快取效能。
建議在每個集區中新增節點,以利自動負載平衡和高可用性。
管理複製延遲
AlloyDB 進行了多項強化,可減少複製延遲。不過,您可能會遇到記錄重播遭到封鎖或無法跟上的情況,導致複製延遲時間增加。
舉例來說,如果主要 VM 大小遠大於讀取集區節點大小,在大量寫入工作負載下,主要 VM 產生的記錄可能比讀取節點重播的速度快,尤其是在讀取節點上同時執行大量讀取工作負載時。在這種情況下,增加讀取節點大小或許有助於提供更多資源。
視應用程式需求而定,您可能需要調整下列參數:
max_standby_streaming_delay
: 決定重播等待的時間長度,之後會取消封鎖重播的查詢。google_storage.log_replay_throttle_read_transactions
:判斷延遲時間較長時是否要節流查詢。節流查詢可為重播提供更多資源,加快追趕速度,並避免向查詢傳回過時資料。alloydb.promote_cancel_to_terminate
:判斷是否要強制終止對取消要求沒有回應的查詢後端。
前一項作業完成之前,請勿開始進行管理作業
AlloyDB 執行個體要待到完成前一項作業後,才能接受新的作業要求。如果試圖在前一項作業完成前啟動新作業,作業要求會失敗。重新啟動執行個體也包含在內。
Google Cloud 控制台中的執行個體狀態看不出是否正在執行作業。綠色勾號只代表執行個體處於 RUNNABLE
狀態。如要查看是否正在執行作業,請按一下左側導覽窗格中的「Operations」(作業),然後查看最新的作業狀態。
設定足夠的儲存空間配額,以因應重要的資料庫維護作業
根據預設,每個叢集最多可使用 16 TB 的儲存空間。如需更多儲存空間,建議提高儲存空間配額。
避免 CPU 使用率過高
您可以在 Google Cloud 控制台的執行個體詳細資料頁面中,查看執行個體使用的可用 CPU 百分比。詳情請參閱「監控執行個體」。您也可以使用「建立指標門檻快訊政策」監控 CPU 使用率,並在達到指定門檻時接收快訊。
為避免過度使用,您可以將執行個體擴充至更多 CPU。變更 CPU 需要重新啟動執行個體。如果執行個體已達到 CPU 數量上限,建議您將資料庫分片至多個執行個體。
避免記憶體耗盡
AlloyDB 具有自動記憶體管理功能,可避免記憶體不足的問題。不過,持續的記憶體壓力可能會導致效能問題。如要尋找記憶體耗盡的跡象,主要應使用「用量」指標。建議這項指標維持在 90% 以下,才能發揮最佳效能。
您也可以使用 total_usage 指標,觀察 AlloyDB 執行個體使用的可用記憶體百分比,包括資料庫容器使用的記憶體,以及作業系統快取分配的記憶體。
觀察用量和總用量指標的差異,即可判斷程序使用的記憶體量,以及作業系統快取使用的記憶體量。您可以重新利用這個快取中的記憶體。
擴充 AlloyDB 執行個體,增加記憶體大小。變更執行個體的記憶體大小時,您必須重新啟動執行個體。如果執行個體已達記憶體大小上限,您必須將資料庫分片至多個執行個體。
如要進一步瞭解如何在 Google Cloud 控制台中監控用量和總用量指標,請參閱「監控執行個體」。
確認執行個體具有最佳交易 ID
如要在 Google Cloud 控制台Resource Type
的「指標探索器」頁面查看執行個體的交易 ID 用量,請將 AlloyDB for PostgreSQL Database
設為 Metric
,並將 Percentage of instance's transaction IDs consumed
設為 AlloyDB for PostgreSQL Database
。詳情請參閱「使用 Metrics Explorer 建立圖表」一文。
AlloyDB 內建的自適應自動清除功能有助於減輕清除相關問題。
資料架構
盡可能將大型執行個體分割為較小的執行個體
請盡量使用多個小型 AlloyDB 叢集,效果會比使用單個大型的執行個體更好。大型單體式執行個體在管理上會比多個小型執行個體更困難。
請勿使用過多的資料庫資料表
請將執行個體的表格數量控制在 10,000 個以下。資料庫資料表過多,會影響資料庫升級時間。
查詢效能
如果您執行分析查詢,請啟用資料欄引擎
閱讀 AlloyDB 資料欄引擎總覽。 檢查啟用資料欄引擎後可獲得效益的查詢類型。
您可以監控資料欄引擎用量。
如果您是第一次使用直欄引擎,請先熟悉自動直欄化。然後,您可以選擇手動管理資料欄。
擴大執行個體規模,提高查詢效能
如果查詢效能不佳,請考慮擴大執行個體。
每個 SKU 的 vCPU 和記憶體設定都有所限制,快速快取也有所限制。如果資料量很大,且查詢效能不佳,請考慮擴充至較大的執行個體。
部署讀取集區,並將讀取查詢卸載至讀取集區
如果應用程式需要大量寫入和讀取,請考慮部署讀取集區,並將讀取查詢作業卸載至讀取集區。
如果是需要讀取大量資料的工作負載,請新增讀取集區執行個體,以分擔主要執行個體的讀取流量。
應用程式實作
使用適合的連線管理做法
使用適合的連線管理做法,例如連線集區和指數輪詢。
使用合適的連線管理技術可改善應用程式的資源運用,也有助於遵守 AlloyDB 連線限制。
測試應用程式對維護更新的回應
測試應用程式對維護更新的回應,更新在維護期間隨時可能會發生。
您可以執行運算資源調度作業或更新靜態 PostgreSQL 標記,觸發低停機時間維護作業 (LDTM),模擬維護更新。
執行 LDTM 時,執行個體會短暫無法使用,現有連線也會中斷。測試 LDTM 可協助您進一步瞭解應用程式如何處理排定的維護作業,以及系統的復原速度。
測試應用程式對於容錯移轉的回應
測試應用程式對於容錯移轉的回應,容錯移轉隨時可能發生。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 API 手動啟動容錯移轉。詳情請參閱「啟動容錯移轉」。
避免進行大量交易
盡量維持小型的簡短交易。如果需要更新大型資料庫,請分成多項小型交易進行,而非執行單次的大型交易。
避免大量子交易
如果交易時間較長,請避免在交易中執行大量子交易。
在 AlloyDB 中,於 PL/pgSQL 錯誤區塊中執行交易時,會建立與錯誤區塊對應的交易子交易。如果存在長時間執行的交易,且子交易數量超過 64 筆,整體系統效能就會降低。
使用最新版驗證 Proxy
如果使用 AlloyDB Auth Proxy,請務必使用最新版本。詳情請參閱「保持 Auth Proxy 用戶端為最新版本」。
資料匯入與匯出
從 PostgreSQL 適用的 Cloud SQL 備份還原資料以進行遷移
如要瞭解如何簡化遷移程序,請參閱「從 Cloud SQL for PostgreSQL 遷移至 AlloyDB」。
如要瞭解如何使用持續資料複寫,將資料從 PostgreSQL 適用的 Cloud SQL 遷移至 AlloyDB,請參閱「Database Migration Service for PostgreSQL to AlloyDB」(PostgreSQL 適用的資料庫移轉服務至 AlloyDB)。
加速匯入小型執行個體
針對小型執行個體匯入大型資料集時,您可以暫時增加執行個體的 CPU 和 RAM,以提升效能。
備份與還原
使用適當的 AlloyDB 功能保護資料
使用備份、時間點復原 (PITR) 和匯出功能,確保資料備援和保護。這兩種方式可在不同情境下各自提供保護,在健全的資料保護策略中下,兩者相輔相成。
備份作業不會耗用大量資源,能夠將執行個體上的資料還原至您備份時的狀態。不過,AlloyDB 的備份功能有一些限制。如果刪除執行個體,也會一併刪除備份。您無法備份單一資料庫或資料表。而且如果執行個體所在的地區無法使用,即使您身在可用的地區,也無法透過備份還原執行個體。
時間點復原功能可協助您將執行個體復原至特定時間點。舉例來說,如果發生錯誤導致資料遺失,您可以將資料庫復原到錯誤發生前的狀態。時間點復原一律會建立新的執行個體,您無法對現有的執行個體執行時間點復原。
匯出所需的時間較長,因為會在 Cloud Storage 建立外部檔案,讓您用來重新建立資料。即使刪除執行個體,也不會影響到匯出的資料。此外,您只能匯出單一資料庫或資料表,視匯出格式而定。
避免執行個體和備份遭到意外刪除
如要啟用預設的誤刪防護機制,請使用 Google Cloud 控制台或 Terraform 建立 AlloyDB 執行個體。
使用 AlloyDB 的匯出功能匯出資料,進一步保護資料。搭配使用 Cloud Scheduler 與 Cloud Scheduler API,自動管理匯出作業。
如要處理更進階的情境,請搭配使用 Cloud Scheduler 和 Cloud Run functions,自動執行作業。