Oracle 性能优化
数据库性能优化是运维工作的核心之一。本文记录常见的性能优化方法论。
生成 AWR 报告
Section titled “生成 AWR 报告”@?/rdbms/admin/awrrpt.sql下面是 Oracle 性能优化相关视频:
- DB Time:数据库活动时间
- Load Profile:每秒事务数、逻辑读、物理读
- Top 5 Timed Events:最耗时间的等待事件
- SQL ordered by Elapsed Time:耗时最长的 SQL
SQL 执行计划
Section titled “SQL 执行计划”查看执行计划
Section titled “查看执行计划”EXPLAIN PLAN FORSELECT * FROM employees WHERE department_id = 10;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);实时执行计划
Section titled “实时执行计划”SELECT * FROM TABLE( DBMS_XPLAN.DISPLAY_CURSOR(sql_id => 'abc123', format => 'ALLSTATS LAST'));| 等待事件 | 说明 | 可能原因 |
|---|---|---|
| db file sequential read | 单块读 | 索引扫描、I/O 瓶颈 |
| db file scattered read | 多块读 | 全表扫描 |
| log file sync | 日志同步 | commit 频繁、I/O 慢 |
| enq: TX - row lock contention | 行锁争用 | 热点数据更新 |
| latch: cache buffers chains | 缓存链锁 | 热点块 |
查看当前等待事件
Section titled “查看当前等待事件”SELECT event, COUNT(*)FROM v$sessionWHERE status = 'ACTIVE'GROUP BY eventORDER BY 2 DESC;- 先定位后优化:通过 AWR 找到瓶颈
- 关注 SQL:80% 的性能问题来自低效 SQL
- 合理索引:避免过度索引
- I/O 优化:使用 ASM、合理分布数据文件