1. 首页 > Oracle教程 > 正文

Oracle教程FG113-自适应执行计划

3.3 监控与管理

监控和管理自适应执行计划:

— 查看自适应执行计划的使用情况
SELECT * FROM v$sql
WHERE is_adaptive_plan = ‘YES’;– 查看执行计划中的自适应决策
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
sql_id => ‘sql_id_value’,
format => ‘ADAPTIVE’
));– 监控自适应执行计划的性能
SELECT sql_id, plan_hash_value, executions, elapsed_time,
is_adaptive_plan
FROM v$sql
WHERE is_adaptive_plan = ‘YES’;

Part04-生产案例与实战讲解

4.1 Oracle数据库自适应执行计划案例

以下是一个自适应执行计划的实际案例:

— 创建测试表
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
department_id NUMBER,
salary NUMBER
);CREATE TABLE departments (
department_id NUMBER PRIMARY KEY,
department_name VARCHAR2(50),
location VARCHAR2(50)
);– 插入测试数据
INSERT INTO departments VALUES (10, ‘Sales’, ‘New York’);INSERT INTO departments VALUES (20, ‘HR’, ‘London’);INSERT INTO departments VALUES (30, ‘IT’, ‘Tokyo’);INSERT INTO employees VALUES (1, ‘John’, ‘Doe’, 10, 5000);INSERT INTO employees VALUES (2, ‘Jane’, ‘Smith’, 20, 6000);INSERT INTO employees VALUES (3, ‘Mike’, ‘Johnson’, 10, 5500);INSERT INTO employees VALUES (4, ‘Lisa’, ‘Williams’, 30, 7000);COMMIT;– 执行连接查询
SELECT e.first_name, e.last_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE e.salary > 5000;– 查看SQL ID
SELECT sql_id, sql_text FROM v$sql
WHERE sql_text LIKE ‘%employees e JOIN departments d%’ AND rownum = 1;– 查看自适应执行计划
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
sql_id => ‘sql_id_value’,
format => ‘ADAPTIVE’
));
SQL> SELECT e.first_name, e.last_name, d.department_name
2 FROM employees e
3 JOIN departments d ON e.department_id = d.department_id
4 WHERE e.salary > 5000;EMP_NAME EMP_EMP_EMP_LAST_NAME DEPARTMENT_NAME
———- ——— ——————–
Jane Smith HR
Mike Johnson Sales
Lisa Williams IT

SQL> SELECT sql_id, sql_text FROM v$sql
2 WHERE sql_text LIKE ‘%employees e JOIN departments d%’ AND rownum = 1;SQL_ID SQL_TEXT
————- ————————————————–
mno345 SELECT e.first_name, e.last_name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE e.salary > 5000

SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
2 sql_id => ‘mno345’,
3 format => ‘ADAPTIVE’
4 ));Plan hash value: 3986184993

————————————————————————————
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
————————————————————————————
| 0 | SELECT STATEMENT | | 3 | 210 | 4 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 3 | 210 | 4 (0)| 00:00:01 |
| 2 | NESTED LOOPS | | 3 | 210 | 4 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | EMPLOYEES | 3 | 126 | 3 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | SYS_C0012345 | 1 | | 0 (0)| 00:00:01 |
| 5 | TABLE ACCESS BY INDEX ROWID| DEPARTMENTS | 1 | 28 | 1 (0)| 00:00:01 |
————————————————————————————

Predicate Information (identified by operation id):
—————————————————

3 – filter(“E”.”SALARY”>5000)
4 – access(“E”.”DEPARTMENT_ID”=”D”.”DEPARTMENT_ID”)

Note
—–
– this is an adaptive plan

4.2 性能优化实战

优化自适应执行计划性能:

— 调整自适应执行计划参数
ALTER SYSTEM SET optimizer_adaptive_features = TRUE SCOPE=BOTH;ALTER SYSTEM SET optimizer_dynamic_sampling = 4 SCOPE=BOTH;– 监控自适应执行计划的使用情况
SELECT sql_id, plan_hash_value, executions, elapsed_time,
is_adaptive_plan
FROM v$sql
WHERE is_adaptive_plan = ‘YES’ ORDER BY elapsed_time DESC;– 分析自适应执行计划的效果
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
sql_id => ‘sql_id_value’,
format => ‘ADAPTIVE ALLSTATS LAST’
));

4.3 故障排除

自适应执行计划故障排除:

— 检查自适应执行计划是否启用
SELECT * FROM v$parameter WHERE name LIKE ‘optimizer_adaptive%’;– 查看自适应执行计划的统计信息
SELECT * FROM v$sql_plan_statistics_all
WHERE sql_id = ‘sql_id_value’;– 禁用自适应执行计划进行对比测试
ALTER SESSION SET optimizer_adaptive_features = FALSE;– 重新启用自适应执行计划
ALTER SESSION SET optimizer_adaptive_features = TRUE;

Part05-风哥经验总结与分享

5.1 自适应执行计划最佳实践

  • 在合适的场景启用自适应执行计划
  • 监控自适应执行计划的使用情况
  • 分析自适应调整的效果
  • 结合其他性能优化技术使用
  • 定期审查自适应执行计划的性能

5.2 常见问题与解决方案

  • 自适应执行计划不生效:检查参数设置,确保相关功能已启用
  • 性能下降:分析执行计划,调整参数或考虑禁用自适应功能
  • 资源消耗过高:调整采样大小和其他相关参数
  • 执行计划不稳定:考虑使用SQL计划管理来稳定执行计划

5.3 性能调优建议

  • 根据查询类型和数据分布选择是否启用自适应执行计划
  • 合理设置动态采样级别
  • 监控自适应执行计划的性能,及时调整
  • 结合使用SQL计划管理和配置文件
  • 定期分析自适应执行计划的效果,优化系统配置
风哥提示:学习交流加群风哥QQ113257174

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

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

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

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

from oracle:www.itpux.com

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

联系我们

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

微信号:itpux-com

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