Oracle 数据库性能优化是一个系统性工程,通常从架构设计、SQL、索引、内存、I/O、参数、运维多个层面入手。下面按优先级和实战经验给你一个清晰框架。
不要盲目优化,先用工具找问题:
@?/rdbms/admin/awrrpt.sql
关注:
DB Time
Top SQL
Buffer Hit %
I/O 等待
ASH 报告(短时问题)
@?/rdbms/admin/ashrpt.sql
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id=>'xxxx') FROM dual;
V$SESSION
V$SQL
V$SQL_PLAN
V$SEGMENT_STATISTICS
WHERE、JOIN、ORDER BY 字段有索引-- 错误
WHERE TO_CHAR(create_time,'yyyy-mm-dd')='2024-01-01'
-- 正确
WHERE create_time >= DATE'2024-01-01'
AND create_time < DATE'2024-01-02'
CREATE INDEX idx_emp ON emp(dept_id, salary);
-- 错误(varchar2 转 number)
WHERE id = 123
-- 正确
WHERE id = '123'
SELECT * FROM emp WHERE id = :id;
(a,b,c) ✅ a / a,b / a,b,c
SELECT * FROM DBA_UNUSED_INDEXES;
CREATE INDEX idx_upper ON emp(UPPER(name));
SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;
建议:
ALTER SYSTEM SET memory_target=4G SCOPE=SPFILE;
PARTITION BY RANGE(create_time)
好处:
CREATE TABLE t COMPRESS FOR QUERY LOW;
EXEC DBMS_STATS.GATHER_TABLE_STATS('USER','EMP');
如果你愿意,可以:
我可以直接帮你具体定位和优化。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。