,游标是光标的中文翻译,那么到底什么是光标呢?甲骨文概念中是这样描述的:
,当应用程序发出一个SQL语句,解析调用应用程序 数据库准备语句的执行。<>强解析调用强>打开或创建一个游标<强> >强,这是一个处理的那些<强>私人SQL面积>强解析 SQL语句和其他处理信息。SQL游标和私人区域 PGA。
如果上述很多的专业术语把你搞晕了,那你可以简单的理解成,一个sql语句就会对应到一个游标。
游标分类:
- <李>
会话cursor 其实就是指跟这个会议相对应的服务器进程的PGA里(准确的说是佐治亚大学)的一块内存区域(或者说内存结构),它的目的是为了处理且一次只处理一条sql语句。
李> <李>共享cursor 缓存在librarycache (SGA下的共享池)里的一种库缓存对象,说白了就是指缓存在库缓存里的sql和匿名pl/sql。
李>如下图描述
,,
还记得我们在http://lqding.blog.51cto.com/9123978/1685341这篇文章中描述的硬解析,软解析吗?
硬解析,上图中的第4种情况,需要重新构造一个游标。
软解析,上图中的第3种情况,可以在共享池中查询到可以被重用的游标信息。
<强>软软解析>强:如上图,不单共享池中有光标的详细信息,佐治亚大学中也会记录光标的状态。当一个sql,发出后,如果能在佐治亚大学中找到已经打开的相同游标,那么直接共用该游标。无需再进行共享池检,查。如果佐治亚大学中光标的已经关闭,那么直接打开游标即可。也可以直接共用游标。这两种情况都无,需进行共享池的检查,这种解析称之为软软解析。
会话光标
,使用v $ open_cursor视图查询,一个会话最多可以打开的游标数由参数判断定义。
,会话光标又分为三种:分别是隐式游标,显式游标和ref光标只
共享游标分类:
- <李>
父游标
文本相同的子游标的代表。所有文本相同的SQL都共享父游标。
父游标没有执行计划,只有一些管理性的信息,包含了SQL文本和相关的散列值等。
v $ sqlarea中的每一行代表了一个父游标,地址字段表示其内存地址。
李> <李>子游标
SQL文本相同,但是因执行环境等不同,会生成多个执行计划。
包含了SQL的元数据,即使得这个SQL可以执行的所有相关信息,如对象和权限,优化器设置,执行计划等.v SQL中美元的每一行表示了一个孩子光标,根据散列值和地址与父游标关联.child游标有自己的地址,即v SQL.CHILD_ADDRESS美元。
李>
,
案例:
1。创建一个用户
完成,conn /as sysdba 连接。 完成,create user ding  identified by 丁; User 创建。 完成,grant 资源,connect 用丁; Grant 成功。
2。生成数据
完成,create table ding.emp as select *,得到scott.emp; Table 创建。
将数据库重启
3。分别登录斯科特和丁用户,执行如下查询
完成,select *,得到电磁脉冲;
4。查看父游标
完成COL SQL_TEXT FOR 故事本来 完成,COL SQL_ID  FOR 样子 完成SET LINESIZE 200 完成,SELECT sql_text, ,,,,,,sql_id, ,,,,,,执行, ,,,,,,, ,,,,,VERSION_COUNT 得到才能v sqlarea美元 ,WHERE sql_text  LIKE “% emp”; sql_text,,,,,,, sql_id,,,,执行,,,LOADS VERSION_COUNT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - - - - - - - - - - - - - - - - -,- - - - - - - - - - -,- - - - - - - - - - -,- - - - - - - - - - - - - 得到emp获select *,,,,,,,, a2dk8bdn0ujx7,,,,, 2 - 2,,,,,, 2
两次查询共享了一个父游标,该父游标被负载2次,表示被硬解析了两次.VERSION_COUNT表示子游标的个数。
5。查看子游标
完成,,SELECT sql_id, sql_text,负载,child_number parse_calls 得到才能v $ sql ,WHERE sql_text  LIKE “% emp”; sql_id,,,,, sql_text LOADS CHILD_NUMBER PARSE_CALLS - - - - - - - - - - - - - - - - - - - - - -,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,- - - - - - - - - - -,- - - - - - - - - - - -,- - - - - - - - - - - - a2dk8bdn0ujx7,,,,, select *,得到emp,,,,, 1,, 0,,,,,, 1 a2dk8bdn0ujx7,,,,, select *,得到emp,,,,, 1,, 1,,,,,, 1甲骨文学习之性能优化(二)游标