View a markdown version of this page

Aurora DSQL 的並行控制 - Amazon Aurora DSQL

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Aurora DSQL 的並行控制

並行功能可讓多個工作階段同時存取和修改資料,而不會影響資料完整性和一致性。Aurora DSQL 提供 PostgreSQL 相容性,同時實作現代、無需鎖定的並行控制機制。其可透過快照隔離維持完整的 ACID 合規,以確保資料一致性和可靠性。

Aurora DSQL 的主要優點是無需鎖定架構,可消除常見的資料庫效能瓶頸。Aurora DSQL 可防止緩慢交易封鎖其他操作,並消除死結的風險。這種方法讓 Aurora DSQL 特別適合效能和可擴展性至關重要的高輸送量應用程式。

並行控制回應

Aurora DSQL 使用開放式並行控制 (OCC),其運作方式與傳統的鎖定型系統不同。OCC 會評估遞交時的衝突,而不是使用鎖定。當 Aurora DSQL 偵測到衝突時,它會傳回具有 SQLSTATE 程式碼 的 PostgreSQL 序列化失敗40001。回應訊息包含識別衝突類型的 OCC 程式碼:

OC000 — 資料衝突

嘗試修改相同資料列的兩個交易。具有最早遞交時間的交易會成功,而衝突的交易會收到 OC000 回應:

ERROR: change conflicts with another transaction (OC000) (SQLSTATE 40001)
OC001 — 結構描述衝突

工作階段的快取結構描述目錄已過期。當 Aurora DSQL 偵測到自工作階段載入其快取以來目錄版本已變更,且交易無法安全地重新基底至目前版本時,交易會收到 OC001 回應:

ERROR: schema has been updated by another transaction (OC001) (SQLSTATE 40001)

修改結構描述目錄的任何操作都可能導致 OC001 回應,包括 DDL 陳述式,例如 CREATE TABLEALTER TABLE,以及 GRANTREVOKE陳述式。如需詳細資訊,請參閱Aurora DSQL 的 DDL 和分散式交易

設計您的應用程式以實作重試邏輯來處理這些回應。理想設計模式為等冪,並盡可能讓交易重試成為優先求助方法。建議邏輯類似於,標準 PostgreSQL 鎖定逾時或死結情況下的中止和重試邏輯。不過,使用 OCC 時,您的應用程式必須更頻繁地執行此邏輯。

最佳化交易效能的指導方針

為了最佳化效能,請將單一索引鍵或小型索引鍵範圍上的激烈爭用性降至最低。若要達成此目標,請使用下列指導方針設計結構描述,將更新分散至叢集索引鍵範圍:

  • 為您的資料表選擇隨機主索引鍵。

  • 避免使用會提高單一索引鍵爭用性的模式。即使交易量增加,此方法也能確保最佳效能。