oracle数据库优化

简介:

数据库优化:

一.oracle数据库软件系统调整

1.oracle初始化参数文件。

2.oracle动态视图:v$sql    v$sqlarea  v$sqltext  v$session+v$session_wait v$process v$sysstat v$system_event  v$parameter 

3.oracle sga调整.

二.oracle sql语句优化

1.常见的sql技巧:

*不用*代替所有列名

*用truncate代替delete

*在确保完整性的情况下多用commit语句

*尽量减少表的查询次数

*用not exists 替代not in

*用exitst替代in

*用exists替代distinct

*有效利用共享游标

wKiom1NUhGKzO5dCAAArx1V2vhQ966.gif











*以合理的方式使用函数

2.表的连接方法(扫描右到左 ,表少右,表多左)

3.有效的使用索引.

4.oracle的优化器与执行计划

*运行explain plan

例:  

EXPLAIN PLAN

SET STATEMENT_ID = 'demo01' FOR

SELECT e.last_named.department_name
FROM 
hr.employees e, hr.departments d 

WHERE e.department_id = d.department_id;

SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());

Plan hash value: 2933537672

 

-------------------------------------------------------------------------------

| Id| Operation| Name| Rows| Bytes | Cost (%CPU|

--------------------------------------------------------------------------------

|0 | SELECT STATEMENT||106 |2862 |6(17|

|1 |MERGE JOIN||106 |2862 |6(17|

|2 |TABLE ACCESS BY INDEX ROWID| DEPARTMENTS |27 |432 |2(0|

|3 |INDEX FULL SCAN| DEPT_ID_PK|27 ||1(0|

|*4 |SORT JOIN||107 |1177 |4(25|

|5 |TABLE ACCESS FULL| EMPLOYEES|107 |1177 |3(0|

--------------------------------------------------------------------------------

 

Predicate Information (identified by operation id):

---------------------------------------------------

 

4 - access("E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID")

filter("E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID")

 

18 rows selected. 


*Sql trace and tkprof

*Sql*plus autotrace feature

*Oracle sql analyze

sql_trace:

 alter session set sql_trace = true; 

 

Run SQL's for which TKPROF needs to begenerated

 

 alter session set sql_trace = false;

 

select vpar.value || '/' || instance || '_ora_' ||ltrim(to_char(vp.spid,'fm99999')) || '.trc'

from v$process vp, v$sessionvs, v$parameter vpar, v$thread vthr

where vp.addr = vs.paddr

and vs.audsid =userenv('sessionid')

and vpar.name ='user_dump_dest'











本文转自东方之子736651CTO博客,原文链接: http://blog.51cto.com/ecloud/1399443,如需转载请自行联系原作者







相关文章
|
7天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
44 7
|
15天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
29天前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
17 2
|
7天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
35 5
|
15天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(2)
Oracle数据库基本概念理解(2)
13 1
|
3天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
4天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
32 3
|
7天前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
32 7