2016-11-17 22 views
0

我不确定这是否可能使用sql语句。 我正在查找sql​​查询,以了解可用于包含在PARALLEL子句中的硬件的CPU数量。我们无法访问我们的Linux环境,因此我们正在寻求任何可能性来了解这个价值。是否有可能使用SQL?请建议。PLSQL:查询知道有多少CPU可用于PARALLEL分类

实际上,我的索引创建脚本需要的时间比预期的时间要长,并且它使用“NOLOGGING PARALLEL COMPRESS”子句实现。

请建议如果在PARALLEL和COMPRESS子句中留下数字“N”是可以的。

Oracle如何管理并行度以防万一我们错过PARALLEL子句中的CPU信息数量。

回答

1

在sqlplus中,您可以使用以下命令查看cpu的数量。

show parameter CPU_COUNT; 

SQL> show parameter CPU_COUNT; 

NAME         TYPE  VALUE 
------------------------------------ ----------- ------------------------------ 
cpu_count       integer  2 

另外,您可以查询v$parameterNOLOGGING PARALLEL COMPRESS是可选的,以获得相同的值

SQL> select value from v$parameter where name like 'cpu_count'; 

VALUE 
-------------------------------------------------------------------------------- 
2 

创建索引,但他们在某些价值观带给当您使用它。压缩索引节省空间并缩短CPU时间,因此占用更少的空间。如果必须扫描100个块 - 执行100个锁存器,则需要100个一致性获取,这需要一定数量的CPU。现在,如果它被压缩 - 你必须像以前一样做60个块,60%的CPU。除此之外,每个叶块还存储更多索引条目。

对于Oracle并行的工作原理如下解读:

https://docs.oracle.com/cd/E11882_01/server.112/e25523/parallel002.htm

+0

非常感谢@XING提供宝贵建议。 – PS078

1

如果指定并行条款,但没有并行度上市,对象得到默认的DOP。默认的并行使用公式来确定基于所述系统配置的DOP,如以下:

  • 对于单个实例,DOP = PARALLEL_THREADS_PER_CPU X CPU_COUNT
  • 对于Oracle RAC配置,DOP = PARALLEL_THREADS_PER_CPU X CPU_COUNT X INSTANCE_COUNT

可以查询v $参数来获取上述两个参数的名字 - CPU_COUNT和PARALLEL_THREADS_PER_CPU

SQL> SELECT name, value FROM v$parameter WHERE UPPER(name) IN ('CPU_COUNT','PARALLEL_THREADS_PER_CPU'); 
相关问题