本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 TABLE和ALTER TABLE,以及GRANT和REVOKE陳述式。如需詳細資訊,請參閱Aurora DSQL 的 DDL 和分散式交易。
設計您的應用程式以實作重試邏輯來處理這些回應。理想設計模式為等冪,並盡可能讓交易重試成為優先求助方法。建議邏輯類似於,標準 PostgreSQL 鎖定逾時或死結情況下的中止和重試邏輯。不過,使用 OCC 時,您的應用程式必須更頻繁地執行此邏輯。
最佳化交易效能的指導方針
為了最佳化效能,請將單一索引鍵或小型索引鍵範圍上的激烈爭用性降至最低。若要達成此目標,請使用下列指導方針設計結構描述,將更新分散至叢集索引鍵範圍:
-
為您的資料表選擇隨機主索引鍵。
-
避免使用會提高單一索引鍵爭用性的模式。即使交易量增加,此方法也能確保最佳效能。