如果我在select语句中使用/*csv*/
,它是否会使用服务器端的所有可用内核?还是只有1?
我打算做这样的事情:
spool "\path\to\spool1.txt"
select /*csv*/ * from employees;
我不能使用所有核心。我使用了/*+ parallel(auto) */
并且受到了训斥。我不能使用超过1核心。
答案 0 :(得分:3)
首先,CSV位是SQL Developer和SQLcl特定的输出格式化的东西,客户端我们接受输出并将其自动格式化为CSV。那个ZERO DB在那里进行处理。
数据库通常会根据需要自动并行查询。
当参数PARALLEL_DEGREE_POLICY设置为AUTO时,Oracle 数据库自动决定是否应该执行语句 是否平行以及它应该使用什么DOP
您可以预先另外定义TABLE以设置并行度数查询。
CREATE TABLE PARALLEL_5
(
COLUMN1 VARCHAR2(20)
, COLUMN2 INT
)
PARALLEL 5;
所以不要使用Parallel提示与DBA保持联系。
但是,您的DBA也可以通过使用资源使用者组策略自动限制您来处理它。
并行度限制您可以限制最大程度 消费者群体中任何操作的并行性。的程度 parallelism是并行执行服务器的数量 与单个操作相关联。使用PARALLEL_DEGREE_LIMIT_P1 指令属性,用于指定a的并行度 消费者群体。