在低带宽环境中,当事务提交生成大量重做数据时,将导致其他独立事务的速度减慢。这是因为小事务的重做数据将被阻塞,直到先前事务的大型重做数据被传输到DR站点。是否有一种方法可以控制小的重做数据比大的优先,以便其他独立的事务更快地完成。
有什么建议吗?
发布于 2014-10-07 18:09:31
不是的。手术以与在主站点上所执行的顺序完全相同的顺序进入DR站点。您只能在应用程序代码级别重新排序操作,数据库引擎不能为您完成此操作。
数据库引擎无法重新排序对数据的更改,因为它需要确保DR数据库在最近的时间点与主数据库的状态完全相同。
提交传输所有数据的印象是不正确的。数据在整个事务过程中一直被传输,而提交本身是一个很小的传输,它结束了它。提交的唯一特殊之处在于,它是主数据库必须等待的唯一传输,直到提交标记被传输到DR、写入磁盘并被确认为主数据库。
无论如何,我强烈建议在您的archive_log_dest_x中将同步更改为ASYNC,这显然将解决您的问题(等待提交的问题),代价是在实际DR情况下可能会丢失不同步的数据。如果你的软件控制着数以百万计的实时外汇交易,而且你有一个高带宽、高可用的网络连接,那么同步就是最好的选择。如果没有,您应该像大多数其他用户一样,接受这一小风险。
https://dba.stackexchange.com/questions/77930
复制相似问题