发布网友 发布时间:2022-04-10 08:15
共3个回答
懂视网 时间:2022-04-10 12:36
/*+parallel(t,4)*/在大表查询等操作中能够起到良好的效果,
基于并行查询要启动并行进程、分配任务与系统资源、合并结果集,这些都是比较消耗资源,
但我们为能够减少执行事务的时间使用parallel HINT还是值得的,尤其在ODS系统中报表统计等方面更有使用意义.
一般而言主要在如下情况使用parallel HINT
1.表的数据量很大,超过一千万;
2.数据库主机是多个CPU;
3.系统的当前负载较低;
简单的测试如下,效果很明显的:
SQL> select /*+parallel(t,4)*/count(*) from t; COUNT(*) ---------- 30245882 已用时间: 00: 01: 32.04 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=5411 Card=1) 1 0 SORT (AGGREGATE) 2 1 SORT* (AGGREGATE) :Q351880 00 3 2 TABLE ACCESS* (FULL) OF ‘t‘ (Cost=5411 Car :Q351880 d=2822493) 00 2 PARALLEL_TO_SERIAL SELECT /*+ PIV_SSF */ SYS_OP_MSR(COUNT(*)) F ROM (SELECT /*+ NO_EXPAND ROWID(A2) 3 PARALLEL_COMBINED_WITH_PARENT
SQL> select count(*) from t; COUNT(*) ---------- 30245882 已用时间: 00: 04: 34.02 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 TABLE ACCESS (FULL) OF ‘t‘
谈谈HINT /*+parallel(t,4)*/在SQL调优中的重要作用
标签:table 多个 测试 pre serial count 2.0 tab card
热心网友 时间:2022-04-10 09:44
parallel(4) 是对所有表都开4个并行,比如你那张表left join了其他三个表,那么总共就有4个表开并行4X4=16 个进程 如果配置不够大可能会崩.热心网友 时间:2022-04-10 11:02
前者是注释 后者是hint 并行处理