oracle 性能调优之旅开始

简介: 1、先看三篇帖子: www.itpub.net/thread-137600-1-1.html http://www.itpub.net/thread-124424-1-1.

1、先看三篇帖子:

www.itpub.net/thread-137600-1-1.html

http://www.itpub.net/thread-124424-1-1.html

http://blog.itpub.net/post/96/14353

执行下面的语句:

SQL> show parameter area_size;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------
bitmap_merge_area_size               integer     1048576
create_bitmap_area_size              integer     8388608
hash_area_size                       integer     131072
sort_area_size                       integer     65536
workarea_size_policy                 string      AUTO

我们只要知道一个问题,在这里sort_area_size=64K 和 hash_area_size=128K  是针对每个会话的,并不是针对整个数据库的。

1G内存的服务器上,内给到400--500M 给SGA。。2G 能给到1G; 8G 能给到5G。。通常用一个参考的公式来表达这个问题:

os使用内存+SGA+并发进程数*(sort_area_size+hash_area_size+2M) < 0.7* 总内存

不过现在10g ,11g中先后推出了SGA自动管理,内存自动管理。基本不用dba手动设置了。。


2、一个调优的案例分析

这个看了书上的一个调优的案例,总结出来的,具体的内容没有写(参照《oracle数据库性能优化》盖国强等著P69),主要是想同个自己看的第一个例子,来熟悉一般的调优过程。

问题表述:应用是一个后台新闻发布系统,前端展现的是一个大型网站。java开发应用,通过中间件连接池连接数据库。通过连接访问新闻网页极其缓慢,后台发布管理具有同样的问题。通常需要十几秒才能返回。这种性能是用户不能忍受的。

解决过程:

1、检查并跟踪数据库进程:在前台单击相关的新闻条目页面,同时进行后台进程跟踪。

SQL> select sid ,serial# ,username from v$session;

    SID    SERIAL# USERNAME
------- ---------- ------------------
    135      21065
    137      13248 SYS
    141       1793
    147        157
    157          1
    159          3
    160          9
    162       9589
    163          1
    164          1
    165          1


    SID    SERIAL# USERNAME
------- ---------- ------------------
    166          1
    167          1
    168          1
    169          1
    170          1

除了sys及后台进程外,其他的使我们诊断的目标,要对几个进程启用相关的进程SQL_TRACE

SQL>exec dbms_system.set_sql_trace_in_session(sid, serial#,,true);

.......

在这里要跟踪不止一个后台的进程,反正只要认为可疑的进程都要跟踪的。此时,前台的页面进行刷新,等待一段时间。然后关闭SQL_TRACE

SQL>exec dbms_system.set_sql_trace_in_session(sid, serial#,,false);

2、检查TRACE文件:在udump目录下找到相应的跟踪文件,用tkprof工具查看。看到有一个问题,经过了3892次查询,才查询出一条对应的数据记录。在执行计划里,看到这条语句用的全表扫描。(现在要思考为什么不是走的索引?)

3、登陆数据库检查相应的表结构:发现每次查询所用的articleid 列 有索引,但是没有被用到

。为什么呢?检查表结构发现 articleid列时 VARCHAR2类型的数据。而我们查询时,articleid=20224456565这是一个数值的类型。Oracle在执行这个sql查询时,发生了潜在的数据类型转换(把表中的article转换为 number类型,然后和20224456565这个值比较,相同则取出。)很明显,这样需要全表的转换,执行了全表的扫描。。

4、解决办法:解决的办法超级简单,只需要在查询语句中数字两侧加上引单号:articleid=’ 20224456565 ‘ 对于用单引号引起来的数字,oracle会认为是字符串、这样就消除了隐式类型的转换。再次查询,只需要查询2次,即可查询出一行。问题解决。

 






































相关文章
|
消息中间件 Oracle NoSQL
|
SQL Oracle 关系型数据库
|
Web App开发 SQL Oracle
PostgreSQL vs PPAS 差异 - Oracle评估、迁移、验证、性能调优
标签 PostgreSQL , PPAS , 阿里云 背景 1、ppas手册(高度兼容Oracle): https://www.enterprisedb.com/docs/en/11.0/EPAS_Oracompat_Ref_Guide_v11/toc.
1799 0
|
SQL Oracle 关系型数据库
|
Oracle 关系型数据库
博客链接—Oracle性能调优
001 AWR概述:http://blog.itpub.net/29067253/viewspace-1990437/ 002 硬解析和物理读取与软解析和逻辑读取 :http://blog.
678 0
|
关系型数据库 Oracle
DBA_实践指南系列11_Oracle Erp R12性能调优基础(案例)
http://www.itpub.net/thread-1412437-1-1.htmlERP技术讨论群: 288307890 技术交流,技术讨论,欢迎加入 Technology Blog Created By Oracle ERP - 鲍新建
768 0
|
Oracle 架构师 Java
通向架构师的道路(第二十四天)之Oracle性能调优-朝拜先知之旅
前言 这次,我们将在Linux下来动手完成Oracle数据库的安装与使用。 Oracle本身是可以免费下载的包括 它的企业版以及被它收购的Weblogic和Sun中的几乎任何东西你都可以拿来下载和使用,不像IBM和Tibco一些其它厂商,只有“试用版”给你下载,Oracle的东西没有时间限制,你拿来做练习,搭实验环境都是没有任何的问题的。
1216 0
|
SQL Oracle 关系型数据库
【整理】小布老师 ORACLE 9i 性能调优
本文内容来自:http://www.boobooke.com 第01讲:Chapter  01--Overview of Oracle9i Database Performance Tuning第02讲:Chapter  01--Overview of Oracle9i Database Perf...
1194 0
|
Oracle 关系型数据库
小布作品:Oracle 9i 性能调优系列培训
第01讲:Chapter 01--Overview of Oracle9i Database Performance Tuning第02讲:Chapter 01--Overview of Oracle9i Database Performance Tuning第03讲:Chapter ...
946 0