1. 首页 > Oracle教程 > 正文

Oracle教程FG088-并行DML

Part02-生产环境规划与建议

2.1 并行DML配置

并行DML的配置参数:

  • PARALLEL_DML_ENABLED
    • FALSE:默认值,禁用并行DML
    • TRUE:启用并行DML
  • PARALLEL_DEGREE_POLICY
    • MANUAL:默认值,手动设置并行度
    • AUTO:自动决定是否使用并行执行
    • LIMITED:只对并行度提示和并行DDL使用并行执行
  • PARALLEL_DEGREE_LIMIT
    • 默认值:CPU_COUNT * 2
    • 控制并行度的上限
  • PARALLEL_MAX_SERVERS
    • 默认值:CPU_COUNT * 10
    • 最大并行执行服务器数量

风哥提示:在生产环境中,应根据系统的硬件配置和 workload 特点选择合适的并行DML配置。

2.2 并行DML策略

并行DML的策略:

  • 启用并行DML:在会话级别启用并行DML
  • 选择合适的并行度:根据系统资源和操作特点选择合适的并行度
  • 使用并行提示:通过提示指定并行度
  • 表级并行设置:在表级别设置并行度
  • 监控并行执行:定期监控并行执行的情况
  • 调整并行参数:根据监控结果调整并行参数
  • 合理安排时间:在系统负载较低时执行并行DML操作

更多学习教程公众号风哥教程itpux_com

2.3 并行DML注意事项

并行DML的注意事项:

  • 启用并行DML:必须在会话级别显式启用并行DML
  • 系统资源:确保系统有足够的资源支持并行执行
  • 并行度选择:选择合适的并行度,避免过度并行
  • 事务大小:注意并行DML的事务大小,避免过大的事务
  • 回滚段:确保回滚段足够大,以支持并行DML操作
  • 锁定争用:并行DML可能会增加锁定争用
  • 临时表空间:确保临时表空间足够大
  • 监控性能:定期监控并行执行的性能

from oracle:www.itpux.com

Part03-生产环境项目实施方案

在生产环境中实施并行DML的实施方案:

  1. 评估系统资源:评估系统的CPU、内存和I/O资源,确定是否适合使用并行DML。
  2. 分析操作特点:分析DML操作的特点,确定哪些操作适合并行执行。
  3. 配置并行参数:根据系统资源和操作特点配置并行参数。
  4. 测试验证:在测试环境中测试并行DML的效果。
  5. 部署实施:在生产环境中部署并行DML配置。
  6. 监控维护:定期监控并行执行的情况,及时发现和解决问题。
  7. 优化调整:根据监控结果调整并行参数,优化性能。

Part04-生产案例与实战讲解

4.1 并行DML参数设置

示例:并行DML参数设置

— 查看当前的并行参数
SHOW PARAMETER parallel;– 修改并行参数(需要重启数据库)
ALTER SYSTEM SET parallel_degree_policy = ‘AUTO’ SCOPE=SPFILE;ALTER SYSTEM SET parallel_degree_limit = 8 SCOPE=SPFILE;ALTER SYSTEM SET parallel_max_servers = 64 SCOPE=SPFILE;– 立即修改并行参数(不需要重启数据库)
ALTER SYSTEM SET parallel_degree_policy = ‘AUTO’ SCOPE=BOTH;ALTER SYSTEM SET parallel_degree_limit = 8 SCOPE=BOTH;ALTER SYSTEM SET parallel_max_servers = 64 SCOPE=BOTH;– 在会话级别启用并行DML
ALTER SESSION ENABLE PARALLEL DML;– 在会话级别设置并行度
ALTER SESSION FORCE PARALLEL DML PARALLEL 4;

— 查看当前的并行参数
NAME TYPE VALUE
———————————— ———– ——————————
parallel_degree_policy string AUTO
parallel_degree_limit integer 8
parallel_max_servers integer 64

更多视频教程www.fgedu.net.cn

4.2 并行DML使用方法

示例:并行DML使用方法

— 启用并行DML
ALTER SESSION ENABLE PARALLEL DML;– 并行INSERT操作
INSERT /*+ PARALLEL(4) */ INTO employees
SELECT /*+ PARALLEL(4) */ *
FROM employees;– 并行UPDATE操作
UPDATE /*+ PARALLEL(4) */ employees
SET salary = salary * 1.1
WHERE department_id = 10;– 并行DELETE操作
DELETE /*+ PARALLEL(4) */ FROM employees
WHERE department_id = 10;– 并行MERGE操作
MERGE /*+ PARALLEL(4) */ INTO employees e
USING (
SELECT /*+ PARALLEL(4) */ employee_id, salary * 1.1 new_salary
FROM employees
WHERE department_id = 10
) src
ON (e.employee_id = src.employee_id)
WHEN MATCHED THEN
UPDATE SET e.salary = src.new_salary;– 使用表级并行设置
ALTER TABLE employees PARALLEL 4;– 启用并行DML后执行DML操作
ALTER SESSION ENABLE PARALLEL DML;INSERT INTO employees
SELECT * FROM employees;– 禁用表级并行设置
ALTER TABLE employees NOPARALLEL;

— 并行INSERT操作
107 rows created.

— 并行UPDATE操作
10 rows updated.

— 并行DELETE操作
10 rows deleted.

— 并行MERGE操作
10 rows merged.

— 使用表级并行设置
Table altered.

— 启用并行DML后执行DML操作
107 rows created.

— 禁用表级并行设置
Table altered.

学习交流加群风哥微信: itpux-com

4.3 并行DML监控

示例:并行DML监控

— 查看并行执行服务器的状态
SELECT
server_name,
status,
sid,
serial#,
process,
program
FROM v$px_process;– 查看并行执行的会话
SELECT
sid,
serial#,
username,
sql_id,
qcsid,
qcserial#
FROM v$session
WHERE qcsid IS NOT NULL;– 查看并行执行的SQL语句
SELECT
sql_id,
sql_text,
px_servers_executions,
executions,
elapsed_time,
cpu_time
FROM v$sql
WHERE px_servers_executions > 0
AND (sql_text LIKE ‘%INSERT%’ OR sql_text LIKE ‘%UPDATE%’ OR sql_text LIKE ‘%DELETE%’ OR sql_text LIKE ‘%MERGE%’);– 查看并行执行的统计信息
SELECT
name,
value
FROM v$sysstat
WHERE name LIKE ‘%parallel%’;– 查看并行执行的等待事件
SELECT
event,
total_waits,
time_waited,
avg_wait
FROM v$system_event
WHERE event LIKE ‘%parallel%’;

— 查看并行执行服务器的状态
SERVER_NAME STATUS SID SERIAL# PROCESS PROGRAM
————————————————————————— ——– ———- ———- ——— ————————————————
P000 AVAILABLE 123 456 12345 oracle@hostname (P000)
P001 AVAILABLE 124 457 12346 oracle@hostname (P001)
P002 AVAILABLE 125 458 12347 oracle@hostname (P002)
P003 AVAILABLE 126 459 12348 oracle@hostname (P003)

— 查看并行执行的会话
SID SERIAL# USERNAME SQL_ID QCSID QCSERIAL#
———- ———- —————————— ————- ———- ———-
127 460 SCOTT a1b2c3d4e5f6 127 460
123 456 SYS a1b2c3d4e5f6 127 460
124 457 SYS a1b2c3d4e5f6 127 460
125 458 SYS a1b2c3d4e5f6 127 460
126 459 SYS a1b2c3d4e5f6 127 460

— 查看并行执行的SQL语句
SQL_ID SQL_TEXT PX_SERVERS_EXECUTIONS EXECUTIONS ELAPSED_TIME CPU_TIME
————- ———————————– ——————– ———- ———— ———-
a1b2c3d4e5f6 INSERT /*+ PARALLEL(4) */ INTO 4 1 2000000 1500000

学习交流加群风哥QQ113257174

4.4 并行DML性能测试

示例:并行DML性能测试

— 创建测试表
CREATE TABLE test_parallel_dml (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
value NUMBER,
created_date DATE
);– 插入测试数据
BEGIN
FOR i IN 1 .. 1000000 LOOP
INSERT INTO test_parallel_dml VALUES (
i,
‘Name ‘ || i,
i,
SYSDATE – MOD(i, 365)
);END LOOP;COMMIT;END;/– 创建索引
CREATE INDEX test_parallel_dml_idx ON test_parallel_dml(created_date);– 测试1:串行INSERT操作
SET TIMING ON

INSERT INTO test_parallel_dml
SELECT * FROM test_parallel_dml;– 测试2:并行INSERT操作
ALTER SESSION ENABLE PARALLEL DML;INSERT /*+ PARALLEL(4) */ INTO test_parallel_dml
SELECT /*+ PARALLEL(4) */ * FROM test_parallel_dml;– 测试3:并行UPDATE操作
UPDATE /*+ PARALLEL(4) */ test_parallel_dml
SET value = value * 1.1
WHERE created_date > SYSDATE – 180;– 测试4:并行DELETE操作
DELETE /*+ PARALLEL(4) */ FROM test_parallel_dml
WHERE created_date > SYSDATE – 90;SET TIMING OFF

— 测试1:串行INSERT操作
1000000 rows created.
Elapsed: 00:00:12.34

— 测试2:并行INSERT操作
2000000 rows created.
Elapsed: 00:00:03.45

— 测试3:并行UPDATE操作
1000000 rows updated.
Elapsed: 00:00:05.67

— 测试4:并行DELETE操作
500000 rows deleted.
Elapsed: 00:00:02.34

学习交流加群风哥QQ113257174

Part05-风哥经验总结与分享

风哥提示:在使用并行DML时,应注意以下几点:

  • 启用并行DML:必须在会话级别显式启用并行DML,否则即使使用了并行提示也不会启用并行执行。
  • 评估系统资源:确保系统有足够的CPU、内存和I/O资源支持并行执行。
  • 选择合适的并行度:根据系统资源和操作特点选择合适的并行度,避免过度并行。
  • 适合的操作类型:只对大批量数据的DML操作使用并行执行,小批量操作可能不适合。
  • 合理配置参数:根据系统特点配置并行参数,如PARALLEL_DEGREE_POLICY、PARALLEL_MAX_SERVERS等。
  • 监控并行执行:定期监控并行执行的情况,及时发现和解决问题。
  • 注意事务大小:控制并行DML的事务大小,避免过大的事务导致回滚段不足。
  • 临时表空间:确保临时表空间足够大,以支持并行DML操作。
  • 测试性能:在使用并行DML前,进行性能测试,验证并行执行的效果。
  • 结合其他优化手段:并行DML应与其他优化手段结合使用,如索引优化、SQL重写等。

更多学习教程公众号风哥教程itpux_com

from:风哥.QQ113257174.WX:itpux-com,web: http://www.fgedu.net.cn

风哥提示:请根据实际情况调整配置和参数,确保生产环境的安全性和稳定性。学习交流加群风哥QQ113257174

生产环境建议:请根据实际情况调整配置和参数,确保生产环境的安全性和稳定性。

风哥提示:更多学习教程公众号风哥教程itpux_com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息