本頁說明如何設定最大提交 (寫入) 延遲時間,以最佳化 Spanner 中的寫入輸送量。
總覽
為確保資料一致性,Spanner 會將寫入要求傳送至資料庫中的所有投票備用資源。這項複製程序可能會造成運算負擔。詳情請參閱「複製」。
透過最佳化寫入作業,您可以選擇將這些運算成本攤銷,方法是將一組寫入作業一起執行。為此,Spanner 會稍微延遲,並收集需要傳送至相同投票參與者的寫入群組。以這種方式執行寫入作業可大幅提升總處理量,但延遲時間會稍微增加。
預設行為
如果您未設定提交延遲時間,Spanner 可能會為您設定少量延遲,以攤銷寫入作業的成本。
常見用途
您可以根據應用程式需求,手動設定寫入要求的延遲時間。您也可以將最大提交延遲時間設為 0 毫秒,針對延遲時間高度敏感的應用程式停用提交延遲。
如果您有可容許延遲的應用程式,且想盡量提高輸送量,設定較長的提交延遲時間可大幅提升輸送量,但每次寫入作業的延遲時間會較長。舉例來說,如果您要大量載入資料,且應用程式不在意 Spanner 寫入個別資料的速度,則可將提交延遲時間設為較長的值,例如 100 毫秒。建議您先從 100 毫秒開始,然後向上和向下調整,直到延遲和輸送量之間的取捨符合需求為止。對大多數應用程式而言,20 毫秒到 100 毫秒之間的值最合適。
如果您有對延遲時間要求嚴格的應用程式,Spanner 預設也會對延遲時間要求嚴格。如果工作負載有尖峰,Spanner 可能會設定少量延遲。您可以嘗試將值設為 0 毫秒,判斷以增加輸送量為代價來減少延遲,是否適合您的應用程式。
設定混合提交延遲時間
您可以針對寫入作業的子集設定不同的最大延遲時間。如果這麼做,Spanner 會使用為這組寫入作業設定的最短延遲時間。不過,我們建議在大多數用途中選擇單一值,因為這樣可預測的行為會更多。
限制
您可以將提交延遲時間設為 0 到 500 毫秒。如果提交延遲時間超過 500 毫秒,系統會顯示錯誤。
在提交要求中設定提交延遲時間上限
最大提交延遲參數是 CommitRequest
方法的一部分。您可以使用 RPC API、REST API 或 Cloud Spanner 用戶端程式庫存取這個方法。
C#
Go
Java
Node.js
Python
Ruby
監控寫入要求延遲時間
您可以使用Google Cloud 控制台監控 Spanner CPU 使用率和延遲時間。如果寫入要求延遲時間較長,CPU 使用率可能會降低,但延遲時間會增加。如要瞭解 Spanner 要求的延遲時間,請參閱「擷取並以視覺化方式呈現 Spanner API 要求延遲時間」。