视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle性能优化之游标及SQL
2020-11-09 12:46:17 责编:小采
文档


Oracle性能优化 之 游标及SQL,这些SQL语句严格来说是无法共享游标(也就是共享执行计划)的,但是这些语句所需要执行计划其实都

一、游标

我们要先说一下游标这个概念。

从Oracle数据库管理员的角度上说,游标是对存储在库缓存中的可执行对象的统称。SQL语句是存储在库缓存中的,它是游标。除了它之外,还有Oracle的存储过程也是存储在库缓存中的可执行对象,从Oracle DBA的角度上说,它也是游标。Oracle也把它算为游标,在某些和游标相关的视图中,也会显示存储过程的一些信息的。但从开发者的角度说,只有SQL语句才是游标。

二、关于游标的视图

你的应用程序或许是用Java、Pro*C等语言开发的,也可能有中件间,等等,对于DBA来说,我们不必过多的关心这些。以一个常见的三层应用为例, 如下图:

类似的图我们在很多地方都可以看到,假设这是一个三层J2EE应用。客户端调用的Java应用程序存放在中间的应用服务器层,应用程序的执行由应用服务器负责。

如上图这段Java应用程序,它的执行就是应用应用服务器的任务。但是,当执行到executeQuery ("select * from Test")语句时,这条Java语句要求从数据库服务器中查询表Test。发下图:

这条语句的执行,是由数据库服务器负责的。数据库服务器只负责以最快的速度将“Select * from test”执行完毕。其他的它一概不负责。我们作为DBA,只要保证SQL语句可以更快的执行就行了,至于应用程序逻辑方面的问题,不由我们负责。也就是说,作为DBA,我们不必负责具体代码的问题,我们只负责SQL语句的执行。每条送交Oracle执行的SQL语句,无论这条语句是你手动在SQL*Plus命令窗口中敲入的,还是应用服务器传送给Oracle要求执行的,它们都以一样的方式被传递到Oracle中,由服务器进程执行。这些SQL语句的执行情况、具体的执行计划等数据资料会在一些视图中被记录下来,以供DBA追踪问题、调优SQL的执行。

下载本文
显示全文
专题