Configure and use parallel execution for queries


#1

Parallel execution нь нэг үйлдлийг олон болгон хуваан ажиллуулж тухайн үйлдлийн ажиллаж дуусах цагийг богинсгож хурдасгана. Хэрэв I/O ашиглалт бага байвал үүгээр хүч нэмэгдүүлэн үр дүнг шуурхай гаргаж авахад ашиглагддаг. Олон ширхэг жижиг үйлдлүүд (OLTP) болон хязгаарлах тохиргоо хийгдсэн үйлдлүүдэд ашиглахгүй байх шаардлагатай. OLTP тохиолдолд бид index үүсгэх, batch processing зэрэг үйлдлүүдэд ашиглавал тохиромжтой.

Эн аргыг ашиглах үндсэн нөхцөл нь олон CPU, болон дискүүд ашиглагдаж байх шаардлагатай. Хэрэв уг шаардлагыг хангаагүй тохиолдолд ашиглавал үр дүн эсрэгээрээ гарч ачааллах асуудалтай тулгарна. Дараах тохиолдлуудад ашиглавал илүү давуу талтай байх болно.

  • TABLE SCANS, INDEX FAST FULL SCANS, PARTITIONED INDEX RANGE SCANS
  • JOINS, NESTED LOOP, SORT MERGE, HASH, START TRANSFORMATION
  • DDL statements (CTAS, CREATE INDEX, REBUILD INDEX, REBUILD INDEX PATTITON, MOVE, SPLIT, COALESCE, …)
  • Statements DML (INSERT AS SELECT, UPDATE, DELETE and MERGE)
  • Parallel Query (SELECT)
  • Multiple SQL (GROUP BY, NOT IN, SELECT DISTINCT, UNION, UNION ALL, CUBE, ROLLUP) operations
  • SQL * Loader with parameter PARALLEL = TRUE

PARALLEL_DEGREE_POLICY параметрын тохиргооны дагуу Parallel Execution ашиглах эсэхийг шийдвэрлэнэ.

  • PARALLEL_DEGREE_POLICY = MANUAL => зааж өгсөн тохиолдолд л ажиллана
    Жиш:
    ALTER TABLE sales PARALLEL 16;
    SELECT /*+ parallel(16) / COUNT() FROM customers; гэх мэт
  • PARALLEL_DEGREE_POLICY = LIMITED => DEGREE = DEFAULT үед хүснэгт, индексүүдийн хувьд ажиллана
  • PARALLEL_DEGREE_POLICY = AUTO => Бүх тохиолдолд ажиллана

Дараах коммандаар идэвхжүүлнэ:

SQL> ALTER SYSTEM SET PARALLEL_DEGREE_POLICY=AUTO SCOPE=BOTH;

Жишээнүүд:

SQL> ALTER TABLE SH.SALES PARALLEL 4;
SQL> ALTER TABLE SH.SALES PARALLEL (DEGREE DEFAULT);
SQL> 
SQL> --- hint ашиглах
SQL> SELECT /*+ PARALLEL(SALES,4) */ SUM(AMOUNT_SOLD) FROM SH.SALES;
SQL> 
SQL> --- PARALLEL_MIN_TIME_THRESHOLD-ын утгыг 10 секунд болговол түүнээс энэ 10-с бага секундэд ажиллаж буй коммандууд үйлчилнэ
SQL> ALTER SESSION ENABLE PARALLEL QUERY;
SQL> ALTER SESSION ENABLE PARALLEL QUERY PARALLEL 5;
SQL> ALTER SESSION ENABLE PARALLEL DML;
SQL> ALTER SESSION ENABLE PARALLEL DDL;

SQL> --- Хэрэглэгчийн session-ий утгыг заавал ашиглахаар өөрчлөх
SQL> ALTER SESSION FORCE PARALLEL QUERY;
SQL> ALTER SESSION FORCE PARALLEL QUERY PARALLEL 5;
SQL> ALTER SESSION FORCE PARALLEL DML;
SQL> ALTER SESSION FORCE PARALLEL DDL;

Хэрэглэгдэх views


SQL> select object_name from dba_objects where object_name like 'V$P_\_%' escape '\';

OBJECT_NAME
--------------------------------------------------------------------------------
V$PQ_SESSTAT
V$PQ_SLAVE
V$PQ_SYSSTAT
V$PQ_TQSTAT
V$PX_BUFFER_ADVICE
V$PX_INSTANCE_GROUP
V$PX_PROCESS
V$PX_PROCESS_SYSSTAT
V$PX_SESSION
V$PX_SESSTAT

10 rows selected.

SQL>