目前OpenSearch支援建立多表join:
如果多表配置了RDS、polarDB資料來源並且通過DTS資料訂閱的方式同步增量資料,主、輔表都可以同步到OpenSearch中,但為保障使用者資料同步的時效性,會做出如下限制:
說明
主表+輔表更新量不能超過1500tps,否則主、輔表的時效性不承諾即時
輔表更新觸發主表更新量不能超過1000tps,否則可能造成主輔表均有延遲
當主輔表的join關係是N:1時,建議N值不超過10
主輔表join邏輯
這裡以兩張表為例:
輔表更新邏輯
這裡以兩張表,並且主輔表對應關係為N:1為例:
由上圖可知:
在主輔表join之後,合并成為一張寬表,所有更新操作均在寬表裡進行
當更新主鍵記錄時,由於主表的主鍵是唯一的,主表更新一條記錄,對應寬表更新一條記錄
當更新輔表記錄時,由於輔表對應的主鍵,在主表中可以join上多條記錄(即N:1,N的值),則輔表
更新一條記錄,可能造成
寬表更新多條記錄
得出結論:
由於大量更新輔表,可能會造成主表的延遲,為保證主表的時效性,限制輔表更新觸發主表更新的最大量為1500tps
輔表更新觸發主表更新超過1500tps時,輔表更新會被限速,所以不保證輔表更新時效性,如果繼續大量更新輔表可能造成更多延遲
建議當主輔表的join關係是N:1時,建議N值不超過10
相關建議
如果對主表的延遲可以容忍,可以提工單,開放輔表tps限速的限制
如果對輔表的時效性可以容忍,且主表由於輔表的大量更新導致有較大延遲,可以提工單,限制輔表的更新量