本頁說明如何設定最大提交 (寫入) 延遲時間,以最佳化 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
小茹
監控寫入要求延遲時間
您可以使用Google Cloud 控制台監控 Spanner CPU 使用率和延遲。如果寫入要求延遲時間較長,CPU 使用率可能會降低,但延遲時間會增加。若要瞭解 Spanner 請求的延遲,請參閱 擷取和視覺化 Spanner API 要求延遲。