单个SELECT是否会显着降低Oracle数据库的性能?

时间:2012-02-13 19:21:17

标签: performance oracle

所有

考虑

  • 版本10gR2或更高版本的Oracle数据库。
  • 硬件足以超过现有峰值工作负荷超过100%

您是否可以构建具有单个连接且对用户表(不是系统表或v $或x $表)的只读访问权限的单个用户降低Oracle数据库整体性能的任何情况。还列出缓解策略(如果有)。

根据规定,请考虑这不是一个数据库,它远离饱和的几个CPU周期,因此任何额外的负载都是危险的。这是关于当前工作量的大小合适的盒子。

E.G。

如果用户使用并行提示,Oracle可能会使用非常高的DOP来执行该查询并使其他CPU进程匮乏。缓解:向用户解释禁止并行提示。

1 个答案:

答案 0 :(得分:6)

最简单的方法是发出一个查询,它可以自己多次执行最大表的笛卡尔积。这将很快耗尽TEMP表空间,并为需要排序的其他会话生成错误。您可以通过在TEMP上授予有限的配额来缓解这种情况(如果这是多个人同时使用的应用程序帐户而不是个人可识别的帐户,则可能会变得棘手)或者使用资源管理器来终止会话运行时间过长或使用过多的CPU或I / O资源。

即使没有明确的PARALLEL提示,Oracle也可能会自动使用并行性。根据Oracle版本以及如何配置并行性,启用并行自动调整以随时限制并行工作程序的总数。当然,这并不妨碍只读用户创建十几个会话,每个会话都会产生几个并行的工作程序,这些工作程序阻塞了您实际想要运行更多并行工作程序的其他会话。如果系统受CPU限制,您可以使用资源管理器为不同类型的工作负载配置优先级。

如果你允许一个匿名的PL / SQL块,有更多的方法来产生破坏,例如,创建一个嵌套的表,在你的PGA耗尽之前,它会被数十亿行填充。