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

Ste*_*age 3 oracle performance

所有,

考虑

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

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

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

例如

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

Jus*_*ave 6

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

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

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

  • Ach,我刚刚输入一个恶心的笛卡尔联盟.我想补充一点,我最近让我的盒子被一个为循环的每次迭代重新连接的人取下.这不仅仅是需要关注的查询. (2认同)