0

例如,我有一个应用程序可以编写大量审计跟踪。很多。它减慢了速度。如果我在我的 Oracle RAC 上创建一个单独的服务仅用于审计 CRUD,这是否有助于加快我的应用程序的速度?

换句话说,我将大部分应用程序指向通过 SCAN 在我的 RAC 上侦听的主要服务。我采用我的应用程序的子集,即审计跟踪数据操作,并将其指向一个单独的服务侦听,但指向与主侦听器相同的模式。

4

1 回答 1

1

与其他任何事情一样,这取决于。您需要更具体地了解您的应用程序、定义的服务、工作负载、目标等。实际上,您需要在您的环境中对其进行测试才能确定。

一个单独的服务可以让您通过在集群中运行每个服务(在正常操作下)的不同节点集,将一个应用程序的工作负载(编写审计跟踪的那个)与其他应用程序的工作负载隔离开。这可以帮助确保较高优先级的应用程序(可能不编写审计跟踪)具有一定数量的硬件来处理其工作负载,即使较低优先级的线程正在全速运行。当然,由于所有节点都共享同一个磁盘,如果瓶颈是磁盘 I/O,那么这种工作负载隔离可能不会起到多大作用。

在不同的节点集上分离服务也会影响特定服务从本地节点的缓冲区缓存中获取块的频率,而不是从其他节点请求它们并等待它们通过互连传送。一个不断写入日志表的应用程序很可能最终会花费相当多的时间等待少量的热块(例如日志表的主键索引中最右边的块)来获取在不同节点之间来回运送。如果所有审计记录都只写入一个节点(或少数节点),则该热块将始终在本地缓冲区缓存中可用。另一方面,如果编写审计跟踪涉及查询数据库以获取有关更改的信息,

如果您计划以不同的方式管理它们,即使它们在同一组节点上运行,将它们分开也可能很有用。例如,您可以配置 Oracle 资源管理器规则,为使用一种服务的会话提供优先于另一种服务的会话。与在不同节点上运行服务相比,这可能是一种将资源分配给不同工作负载的更细粒度的方式。但它也会增加更多的开销。

于 2014-05-07T21:48:50.157 回答