- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[Oracle体系结构与基本概念
Oracle体系结构与基本概念
Oracle有为各种编程语言实现的API。
Oracle优化器,是oracle一个软件层,与最大化SQL语句性能相关。
Oracle服务器体系结构,包括内存、进程以及用来提供数据库服务相互交互的文件。
Oracle模式对象,包括表、索引、分区及用来实现数据模型 的内容。
OracleAPI
OCI 是C语言的API
JDBC是通用的API ,java数据库连接器
ADO.NET是.net程序与数据库进行通信的API。
每一条SQL语句在客户端都表现为一个上下文区域或者一个游标。
(1)创建游标。游标是内存中的一块区域,用来保存当前打开的SQL语句的定义信息。
(2)在Oracle共享内存中进行检索,确认是否存在这条SQL语句的缓存副本
(3)解析SQL语句。解析SQL语句涉及检查SQL语句的语法,对象引用及调用Oracle优化器来确定查询计划。
(4)为绑定变量赋值。在SQL语句执行之前,所有绑定变量的值都必须黏附到这条SQL语句上。
(5)执行SQL语句。如果这不是一条查询语句,它的执行过程包含DML语句或者DDL语句的执行。如果是查询语句,执行与 将为语句的数据提取做准备。
(6)提取记录。对于查询语句来说,数据提取意味着从结果集提取和条或者多条记录。
(7)关闭游标。这一步涉及释放与此游标相关的所有内存以及其他资源(尽管这个游标的共享部分可能仍然保留在oracle的共享内存中)。
创建游标
创建游标。游标是内存中的一块区域,用来保存当前打开的SQL语句的定义信息。
包括语句的已经解析的与未经解析的内容、执行计划及一个指向当前记录的指针。
当SQL语句执行完成时,与此游标相关的内容可以出于其他目的被释放,也可以被保存以供再次执行时使用。在java的jdbc中一个游标等价于一个Statement对象或Prepared Statement对象。
检查缓存的SQL语句
Oracle维护了一个缓存,来保存最近执行的SQL语句以及对应的执行计划。这个缓存保存在共享内存的一个区域中:共享池(shared pool)的SQL area中。每提交一个SQL语句的执行请求,oracle都会在这个缓存中检索匹配的语句。如果匹配到oracle就会用保存在这个缓存中的执行计划,从而避免解析过程中涉及到的大部分开销。
解析SQL语句
检查SQL语法是否有效。即检查关键字与操作符是否有效地被正确使用。
检查SQL语句在语义上是否有效。即这条SQL语句引用的所有数据库对象(即表和字段)是否都有效。
检查用户是否有对所有相关对象执行给定操作的安全权限。
确定SQL语句的执行计划。执行计划描述oracle访问和修改数据时涉及的一系列步骤。这是oracle优化器来完成的。解释操作是一个昂贵的操作,它的开销常常会被高IO请求带来更大开销所掩盖。
关联绑定变量
SQL语句中可以包含变量,它们在每次执行时都可以变化。通常这些变量是SQL语句的参数。该SQL语句定义将要被处理的记录或者将要被插入或更新的新值。我们以“字面量”或绑定“变量”的方式来指定这些变量。
使用“字面量”
select * from employee where employee_id= 206;
这里的206就是字面量。
不过请注意,SQL语句必须完全一致才能在共享池中找到匹配项。因为每次执行时employee_id可能都不一样,所以几乎总是无法在共享池中找到匹配的语句,从而导致这个语句每次都需要重新解析。
使用“字面量”的坏处:
每次改变字面量的值,都必须请求对此SQL语句进行重新解析
当请求解析时,在共享池中找到一条匹配的SQL语句的可能性将非常小。
SQL缓存将被“仅用一次”的SQL语句填满。可能需要更大的容积,但事实上并不需要这么多。
当一个oracle会话想要在共享池中新增一条SQL语句时,它必须获取一个oracle内部锁(闩锁或互斥),在极端情况下,这会导致闩锁或互斥的争用,进而导致性能瓶颈。
使用“绑定变量”的方法来指定这些变量部分:
绑定变量是对这些变量的固定引用。它们可以被定义在编程语言或查询工具的任何地方。在大部分编程语言或工具中,绑定变量都需要添加一个前缀(冒号“:”)。、
如:
SQLVARIABLE bind_employee_number NUMBER
SQLBEGIN
:bind_employee_number := 206;
END;
SQLSELECT * FROM employee where employee_id = :bind_employee_number
使用绑定变量有两个好处:
如果绑定变量的值发生变化,在重新执行这条SQL语句的时候,不需要创建一个新的游标或重新解析这条SQL语句
您可能关注的文档
- [JINKU.doc
- [JAVA基础第3章练习类与对象2012.doc
- [国境卫生检疫.ppt
- [jqx教学设计.doc
- [JSP登陆界面.doc
- [K114851.85特大桥专项施工方案.doc
- [k3用户及维护人员.doc
- [jQuery常用函数和技巧.doc
- (课题的研发与论文的写作.ppt
- [K90053.0钢筋砼盖板涵施工方案.doc
- 2025-2026学年小学综合实践活动四年级下册海燕版教学设计合集.docx
- 2025-2026学年中职思想政治职业生涯规划(第五版)高教版教学设计合集.docx
- 2025年乡村民宿集群化发展模式与乡村旅游扶贫结合研究报告.docx
- 2025-2026学年初中信息技术(信息科技)八年级 第12册滇人版(旧版)教学设计合集.docx
- 2025-2026学年初中信息技术人教版七年级下册-人教版教学设计合集.docx
- 2025-2026学年初中信息技术重大版2019七年级下册-重大版2019教学设计合集.docx
- 2025-2026学年初中音乐八年级上册湘艺版(2024)教学设计合集.docx
- 2025-2026学年初中英语六年级上册牛津上海(试用本)教学设计合集.docx
- 2025-2026学年初中语文八年级下册统编版(部编版)(2024)教学设计合集.docx
- 2025-2026学年初中英语人教版2024七年级下册-人教版2024教学设计合集.docx
文档评论(0)