当前位置: 首页 > 编程日记 > 正文

oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

当前位置:我的异常网» 数据库 » <>读书笔记二

<>读书笔记二

www.myexceptions.net  网友分享于:2013-08-23  浏览:9次

<>读书笔记2

1 绑定变量

1)硬分析和软分析

硬分析需要判断是否已经在共享池中,如果有的话,则直接拿出来,马上可以执行,速度快,

为软分析;否则需要语法解析,语义分析,生成操作计划等,为硬分析。

2) 绑定变量的话

比如select * from xx where account_name=:x

好处在于只要对每一种SQL一次硬分析,因为谓词不同而已。

3)OLTP必须绑定变量而OLAP不应该绑定,因为OLAP中,硬分析的

代价基本可以忽略,但必须确切知道谓词的数值

4)bind peaking,就是在硬分析时,ORACLE会看一下

当前谓词的值,以便生成最佳执行计划,但也只是第一次执行时生成,

以后不会执行。因为OLTP相同的SQL重复频率高,如果反复

解析SQL,必然很大消耗系统资源,执行的计划都很一致,bing peeking

第一次获得了正确的计划后,以后的SQL都会按这个计划执行

2 SQLTRACE的使用

1)alter session set tracefile_identifier='mytest';

设置生成trace的文件标识,可以方便追踪

2)alter session set sql_trace=true;//启用sqltrace

3) 执行SQL语句后,再停止sqltrace,可以在admin/sid/udmup下找到相关的trace文件

4) 使用tkprof工具

tkprof xxxx.trac out.txt 后加各种参数

A explain=username/password,输入SQL的执行计划,如果不用explain,则看到的

是执行路径

B SYS=NO,可以过滤SYS用户的操作建议使用

C aggragate=yes,把相同的SQL在输入文件中作合拼,如果为NO,则分别输出每个SQL

的信息

D sql的3个步骤:分析,执行,数据提取

E 各参数的意义

cpu:单位秒

elapsed:当前的操作一共用时多少(包括CPU事件和等待时间)

disk:磁盘物理读

query:当前的操作一致性读方式读取的数据块数(通常为查询使用的)

current:当前操作的current的方式读取数据块数(通常为修改的)

rows:行数

Misses in library cache during parse:1 为硬分析,为0为软分析

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS :递归SQL语句的分析

3 10046事件

1)level=4:等同于sql_trace功能

alter session set events '10046 trace name context forever,level 4';

2)level=8 :没有绑定变量的值,但它比sql_trace增加了等待事件的信息

3)level=12,等于level=4+level=8

4 10053事件

解决的是为什么CBO会选择这个方式,将列出其执行过程。

1) 设置

alter session set events '10053 trace name context forever,level 1';

2)取消

alter session set events '10053 trace name context off';

3)tkprof不能阅读10053事件,只能读10046事件

4)10053事件中,比较重要的CLUF索引聚合因子,它表示索引上的键值和原表上的

数据分布的一种关系,当索引键值和表中数据的排列顺序大致相同时,它意味着索引

键指向的数据块越集中,这个因子越小,越有利于索引的使用;相反,当索引键指向的

数据快越多时(数据排序和索引相差越大)时,这个因子就越大,越不利索引的使用。

可以使用alter table t1 minimize records_per_block;

5 性能视图和性能参数

1)v$sql

可以查到这个用户正在执行的SQL语句及这条SQL运行了多长,有什么等待

事件

先查询当前用户连接的sid,然后执行

select a.sql_text,b.status,b.last_call_et,b.event from v$sql a,v$session b

where a.sql_id=b.sql_id and b.sid=xxxx; //只能10G用,9I不行

不是所有的sql语句都能在该视图中找到,可以用手工清空共享池的信息,比如

alter system flush shared pool;

select sql_text,parse_calls,executions from v$sql where sql_text like 'select * from xxxx';

可以找出语句分析和执行了多少次

2)v$session

select  machine,username,program,module from v$session;

v$session里面有个字段last_call_et(秒)

active:从session变成active到现在的时间

inactive:从session状态变为incative到现在的时间

select sid from v$mystat where rownum=1 //获得当前用户的sid

select sid,blocking_session from v$session where blocking_session is not null //查看当前哪些会话被

阻塞

同样,$vlock中也可以获得阻塞的信息

select sid,request,block from v$lock where request<>0 and block<>0;

3) 具体参数

cursor_sharing:告诉 oracle在什么情况下共享游标,即SQL重用

默认情况下,设置为exact,即SQL必须完全一样才行,所以最好进行变量绑定;

cursor_sharing=similar:将谓词条件用同一个名称变量替代,让不同的SQL

语句看起来一样,但依然分开两条SQL处理;

cursor_sharing=force:将不同语句的谓词,用一个变量代替,看作同一个语句处理

cursor_sharing跟cursor_force的区别:

其中,比如cursor_sharing:

假设有语句:

SELECT * from t where id=1 and owner='sys';

SELECT * from t where id=2 and owner='sys111';

如果在id列上做了索引,则CBO会检查每个SQL的ID的值,如果有改变,则产生一个新的硬分析,而且不会管owner

列,因为该列没有做索引。

而FORCE的区别在,会把所有的谓词用变量代替,且不管变量的值如何,一律用

第一条SQL语句,而similar会根据不同,重新选择SQL执行计划。

4)db_file_multiblock_read_count:

对于OLTP来说,每次用户读取的记录数少,可以设置的小点;但对于OLAP,因为

查询量大,可以设置的大些应该。

6  AWR性能报告

1 AWR,采集周期1个小时

2 到$oracle_home/rdbms/admin目录下,执行

sqlplus / as sysdba @awrrpt.sql

输入默认的HTML格式,选择时间段,生成路径即可

3 sqlplus sys/xxx@oracl as sysdba  @awrrpti.sql

可以生成其他实例中的AWR报告

4 OLTP的AWR中,应该关注library hit,共享池命中率低则说明SQL不能被重用,

buffer hit越接近100,表明越多在内存中进行,

参数解析:

1)sessions:采集实例连接的会话数,可以了解并发用户数大概情况

2)curror/session:每个会话平均打开的游标数

3)DB TIME:表示用户操作的花费的累计时间,包括CPU时间和等待事件,用户占的

时间比例越高,说明越繁忙。

4)在load profile段中,比较重要的是:

parse:每秒分析次数

hardparases:硬分析次数

logons:每秒登陆数据库的次数

executes:每秒SQL的次数

INSTNACE efficiency percentages:

in-memory sort %:数据块在内存中排序的百分比(包括内存排序和磁盘排序)

,       soft parse %:软分析在总分析数中的百分比

buffer nowait:非等待方式获得数据块百分比,如果太小,说明SQL访问数据块时,数据库正在被别的会话读

入到内存中,有热块

5) TOP 5事件

db file sequential read:指oracle在访问索引数据块时以db file dequential

read方式来将数据读入内存,如果占比例很大,肯定是存在大的查询。

CPU TIME:主要要除以CPU的个数

latch:row cache objects,为共享池争用的等待事件

read by  other session:一个会话在等待另外一个会话将数据块读入内存中,如果等待事件过长,则说明数据

有热块存在。但对于OLAP系统来说,也不一定是出了问题,

因为OLAP中,本身就运行着一些执行时间非常长的SQL,他们要扫描很多数据块,因此

等待是合理的。

如果SQL语句在采样时间点之后还没结束,则可能无法反映其消耗情况

TIME MODEL STATISTICS部分:列出了各种操作占用的数据库时间比例,其中

sql execute elapsed time为SQL占DB的时间。而parse time elapsed和

hard parse elasped time如果相等,表示都为硬解析了。

SQL ORDERED BY ELAPSED TIME:根据执行时间长短排序

sql order by gets:sql获取内存数据块的数量,由大到小顺序排列

其中Buffer gets列:SQL执行获得的内存数据块数量

executions:sql执行的次数

gets per exec:每次执行获得的内存数据块数量

sql ordered by reads:SQL物理读的次数

sql orderd by executions:sql执行次数的信息

sql orded by parse calls:sql 被分析次数的信息,从高到低排列。

sql orderd by cluster wait time:列出了实例之间共享内存数据时发生的等待。

instance activity stats部分为实例的信息统计部分,重点的有:

1)cpu used by this session:说明在当前的性能采集区间里面,oracle消耗的CPU

单位,一个CPU单位是1/100秒。

可以从TOP 5报告中找到CPU TIME为多少秒,而cpu used by this session

比如为476317个CPU单位,每秒消耗132个CPU单位,每秒实际为132/100=1.32秒,

即每秒CPU处理的时间为1.32秒,如果有8个CPU,则132/8=16.5个CPU单位,

即0。16秒/每个CPU处理时间,为低负载。

tablespace io stats:针对表空间的性能统计,其中关注av rs(ms),即平均一次物理读的时间(毫秒)

buffer pool advisory:为oracle给出关于内存的建议

其中,size for est(M):oracle 估算buffer pool的大小

size factor:估算值和实际值的一个比例,比如0.9,为估算值是实际值大小的90%,1.0表示buffer pool

实际的大小

buffers for estimate:估算的buffer的大小(数量)

est phys read factor:估算的物理读的影响因子,是估算物理读和实际物理读的一个比例

estimated physical reads:估算的物理读次数

可以看到当内存增大时,不一定物理读次数就一定下降快,要找到适合的因子才行。

Pga memory advisory:

PGA内存大小的建议,其中关注size factor的点,要找出该点对应的物理读写数量稳定时对应的点(

即ested extra w/a mb read written to disk),此时对应的PGA内存在最佳。

shared pool advisory:主要考虑est lc time saved factr,表示每一个模拟的shared pool大小对

重新将对象读入共享池的影响情况,当这个值得变化很小或者不变时,则增加shard pool内存大小意义不大

7  statspack 性能报告

可以抓取半个小时或15分钟,灵活性更大

1) 安装

sqlplus / as sysdba  @c:\ddxxx\spcreate.sql(使用用户perfstat和密码perfstat)

2) 使用

conn perfstat/perfstat

exec statspack.snap;

exec statspack.snap;

8  ASH性能报告(只是10.2.gXXX 10GR2后才支持)

ASH为AWR的一个部分,ASH侧重当前数据中活动会话的分析,oracle每秒对数据库中的活动会话信息采样,这些

信息会被存放在SGA去,循环使用。

运行方法

sqlplus /  as sysdba @ashrpt.sql

然后输入起始时间,比如-30,即30分钟前。

文章评论

相关文章:

WordPress 开启 Gzip 为网页加载提速减少响应时间

2019独角兽企业重金招聘Python工程师标准>>> 大家都晓得&#xff0c;开启Gzip能极大地压缩文本数据的体积。对于使用 WordPress 的博主来说&#xff0c;开启服务器的GZip压缩是一个为博客加速的好方法。GZip可对多种类型的文 件进行压缩&#xff0c;对于 CSS&#x…

20180829-Java多线程编程

Java 多线程编程 Java给多线程编程提供了内置的支持。一个多线程程序包含两个或多个能并发运行的部分。 程序的每一部分都称作一个线程&#xff0c;并且每个线程定义了一个独立的执行路径。 多线程是多任务的一种特别的形式。多线程比多任务需要更小的开销。 这里定义和线程相关…

b-blkid查看磁盘设备文件系统类型

blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备&#xff08;包括交换分区&#xff09;所使用的文件系统类型、LABEL、UUID等信息进行查询 改命令存在于util-linux-2.23.2-26.el7.x86_64软件包之中 常用命令展示 blkid查询所有设备的文件系统…

与后台交互方法一 ——Ajax

一、Ajax&#xff1a;为无刷新读取服务器端数据&#xff0c;常用在用户注册、在线聊天室等。 使用Ajax读取数据时有以下几点需要注意&#xff1a; 1.字符集编码前后台要一致&#xff0c;否则前台显示的数据为乱码。 2.使用随机数或时间清除缓存、阻止缓存&#xff0c;防止服务器…

php复选框关联数据库字段,通过php将复选框中的多个值插入数据库

|我想将此表单值插入到datanase中&#xff1a;Brand 1Brand 2Brand 3Brand 4Brand 5这些文本框是通过php从数据库中的表中获取的&#xff0c;并且可能是Variable我想以这种格式插入数据库如果检查品牌1&#xff0c;则$ brand \“ 1&#xff0c;\”;最后像这样&#xff1a;inse…

WPF中的容器控件——Grid

网格布局 123123123123123123123123123123123123123123123123123123123123123123123123123123112312312312312312312312312312312312312312312312312312312312312312 123123实际应用中应该少不了网格布局&#xff0c;grid布局的特点&#xff1a; 1.每个grid中可以放多个控件&am…

h-hdparm打开关闭磁盘cache

查看磁盘型号 hdparm -I /dev/sde 查看磁盘缓存情况 hdparm -W /dev/sdb 打开或者关闭磁盘cache hdparm -W 0 /dev/sdb关闭 hdparm -W 1 /dev/sdb打开

linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch

diff(differential)功能说明&#xff1a;比较文件的差异。语  法&#xff1a;diff [-abBcdefHilnNpPqrstTuvwy][-;][-C ;][-D ;][-I ;][-S ;][-W ;][-x ;][-X ;][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]补充说明&#xff1a;diff以逐行的…

连通性2 无向图的双连通 bcc

待续。。。转载于:https://www.cnblogs.com/assult/p/3312457.html

网络规划设计培训与方案集下载

http://down.51cto.com/data/96887为OSPF城域网部署专题http://down.51cto.com/data/565799华为、H3C、神码等的一些关于网络规划设计的PPT资料&#xff0c;有技术性的&#xff0c;有理论的&#xff0c;有技术理论的。http://down.51cto.com/data/96885策略路由与路由策略原理培…

C语言标准库之strcat函数

2018-10-20C库函数strcat()函数的功能是实现字符串的拼接。其函数原型如下所示char *strcat(char *dest, const char *src) 1、参数说明 dest&#xff1a;指向目标数组&#xff0c;该目标包含看一个C字符串&#xff0c;且足够容纳追加之后的字符串。 src: 指向要追加的字…

设计模式——单例模式(Singleton)

保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。——DP UML类图 模式说明 个人认为单例模式是所有设计模式中最为简单的一个模式&#xff0c;因为实现这个模式仅需一个类&#xff0c;而不像其他模式需要若干个类。这个模式中&#xff0c;需要注意的一点就是…

l-logger命令基本介绍

logger是一个shell命令接口&#xff0c;可以通过该接口使用Syslog的系统日志模块&#xff0c;还可以从命令行直接向系统日志文件写入一行信息 logger语法: 可以使用的相关命令 -d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程…

红旗linux可以做服务器吗,在红旗Linux中的E-MAIL服务器(postfix及dovecot)配置过程...

在红旗Linux中打开一个系统终端&#xff0c;使用纯文本方式配置邮件服务器&#xff1a;1、进入postfix服务(smtp服务&#xff0c;用来发送服务)配置文件目录&#xff1a;输入如下命令&#xff1a;cd /etc/postfix2、使用邮件服务器的模板配置文件main.cf.default覆盖原配置文件…

Spring Filter过滤器,Spring拦截未登录用户权限限制

实现的功能&#xff1a;判断用户是否已登录&#xff0c;未登录用户禁止访问任何页面或action&#xff0c;自动跳转到登录页面。 比较好的做法是不管什么人都不能直接访问jsp页面&#xff0c;要访问就通过action&#xff0c;这样就变成了一个实实在在的权限控制了。 那么就有3种…

NOIP模拟 蛋糕(DP+Dilworth定理)

QAQ 【题目分析】 谁能告诉我为什么我的网络流炸了吗。。。。。。。。&#xff08;我相信是SPJ的锅这年头暴力不好打啊&#xff09; 所以我们按x排序&#xff0c;然后就是要找到序列中严格上升序列的最少个数&#xff0c;然后。。。。duang。。。。Dilworth定理&#xff08;上升…

l-lsblk查看设备可用块设备

lsblk命令&#xff08;列出块设备&#xff09;用于列出所有可用的块设备的信息&#xff0c;但是&#xff0c; 它并没有列出有关的RAM磁盘的信息。块设备的例子是硬盘&#xff0c;闪存驱动器&#xff0c;CD-ROM等等,一般可以和blkid命令搭配,blkid可以查看更详细的磁盘信息&…

hdu 4720

最小覆盖圆的模板&#xff1b; 1 #include<stdio.h>2 #include<string.h>3 #include<math.h>4 struct Point5 {6 double x;7 double y;8 } pt[1005];9 struct Traingle10 {11 struct Point p[3];12 };13 struct Circle14 {15 struct Point c…

opencv可以在linux上运行,linux上 安装并 运行opencv

我是在树莓派上安装的。1.先安装依赖项OpenCV 2.2以后版本需要使用Cmake生成makefile文件&#xff0c;因此需要先安装cmake。sudo apt-get install build-essentialsudo apt-get install cmakesudo apt-get install libgtk2.0-devsudo apt-get install pkg-configsudo apt-get …

Calendar类点点滴滴积累

为什么80%的码农都做不了架构师&#xff1f;>>> set(f, value) 将日历字段 f 更改为 value。此外&#xff0c;它设置了一个内部成员变量&#xff0c;以指示日历字段 f 已经被更改。尽管日历字段 f 是立即更改的&#xff0c;但是直到下次调用 get()、getTime()、get…

3.3 栈的链式存储结构

<?php header("content-type:text/html;charsetutf-8"); /*** 栈的链式存储结构的基本操作**包括* 1.初始化 __contruct()* 2.进栈操作 push()* 3.出栈操作 pop()* 4.销毁栈 destroyStack()* 5.清空栈 clearStack()* 6.遍历栈 stackTraverse()*/ class Node{publ…

readelf 读取动态链接表命令

readelf -sV xxx 查看指定二进制文件运行时的加载库以及对应版本 并依据该命令可以修改某一二进制文件依赖的glibc库函数的版本&#xff0c;从而让改二进制程序可以运行在低版本的操作系统 readelf 读取链接表头 readelf -h xxx ELF文件介绍 ELF&#xff08;executable and …

[转]cocos2d-x

Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎&#xff0c;使用 C 开发&#xff0c;基于OpenGL ES&#xff0c;基于Cocos2d-iphone&#xff0c;支持 WOPhone, iOS 4.1, Android 2.1 及更高版本, WindowsXP & Windows7&#xff0c;WindowsPhone 8.[1]Cocos2d-x是一个开源的…

Linux哪个和Windows很像,Linuxfx - 这套Linux操作系统看起来和Windows 10非常类似

正如你在截图中所看到的那样&#xff0c;Linuxfx的外观和感觉与Windows 10非常类似&#xff0c;甚至还可以得到一个带有Windows开始按钮的开始菜单&#xff0c;然而&#xff0c;这个实际上可能是一个问题&#xff0c;因为微软可能不喜欢在另一个操作系统中看到它的Windows标志。…

OSPF工作原理

ospf工作原理链路状态路由协议open标准最短路径优先&#xff08;spf&#xff09;算法链路状态路由协议&#xff08;vs&#xff0c;距离矢量&#xff09;与rip的区别 rip是周期性更新&#xff08;30&#xff09;ospf 不发送完整的路由条目但是它发送链路状态的更新有不同的分…

第十八章 MySQL Workbench5.2使用(待续)

转载于:https://www.cnblogs.com/hzzjj/p/9826074.html

r-rpm常用命令集

rpm 安装rpm包 rpm -ivh xxx.rpm rpm -ivh --nodeps --force xxx.rpm强行安装&#xff0c;不考虑依赖性 rpm --nodeps --force -Uvh *同样强行安装&#xff0c;不考虑依赖性 查看一个文件夹属于那个rpm包 rpm -qf /path/filename 查看文件属于哪个rpm包 rpm -qf xxx.so …

MySQL-存储过程

我们常用的操作数据库语言SQL语句在执行的时候需要要先编译, 然后执行; 而存储过程&#xff08;Stored Procedure&#xff09;是一组为了完成特定功能的SQL语句集, 经编译后存储在数据库中, 用户通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff0…

查看linux虚拟机信息,虚拟机:Linux查看线程信息的步骤

1. 使用 pstree -p PIDps aux | grep firefox | grep -v grepcharles 26058 0.0 0.0 4908 1152 &#xff1f; S 19:17 0:00 /bin/sh /usr/lib/firefox-3.5.4/run-mozilla.sh /usr/lib/firefox-3.5.4/firefoxcharles 26073 7.6 3.4 284264 70164 &#xff1f; Sl 19:17 4:36 /us…

下载备忘:甘特图实现的代码

通过asp.net 代码&#xff0c;拼接字符串&#xff0c;实现甘特图。 样式和原型全部来源于jquery.ganttView插件&#xff0c; https://github.com/mbielanczuk/jQuery.Gantt 通过修改该代码&#xff0c;实现了可以调节高度&#xff0c;宽度等多种参数&#xff0c;具体看代码即可…