orcale同一条语句运行速度差异问题

在oracle中执行一个查询语句,该语句首次执行时orcale会把其内容存入SGA(系统全局区)中,下次再执行同一条语句的时候就不再去解析该语句,而是直接从SGA区中取出该语句执行,但是前提是SQL没有变化过,如果修改过,就不会这样了。

具体的控制机制是: 当有SQL运行时, 系统将分析后的SQL执行完, 并列入LRU, 也就是排队, 当该SQL在一定时间内被再次执行时, 直接从LRU中取出该SQL的计划, 再次执行, 减少分析时间. 如果一定时间没有被执行, 则该SQL在LRU中的位置逐渐会被新进来的SQL挤到后面.  当同一SQL运行时, 只要前次执行过该SQL在LRU中还存在, 就不再分析, 如果一个SQL长时间不用, 那最终会被挤出LRU, 当此时再次执行该SQL时,则系统会重新分析, 就会变慢. 这就是为什么第一次运行需要很长时间, 而后面第N次运行的时间都很短的缘故.

时间: 2024-08-13 00:29:25

orcale同一条语句运行速度差异问题的相关文章

SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)

前言 前面几篇我们分析了关于SQL Server关于性能调优的一系列内容,我把它分为两个模块. 第一个模块注重基础内容的掌握,共分6篇文章完成,内容涵盖一系列基础运算算法,详细分析了如何查看执行计划.掌握执行计划优化点,并一一列举了日常我们平常所写的T-SQL语句所会应用的运算符.我相信你平常所写的T-SQL语句在这几篇文章中都能找到相应的分解运算符. 第二个模块注重SQL Server执行T-SQL语句的时候一些内幕解析,共分为5篇文章完成,其中包括:查询优化器的运行方式.运行时几个优化指标值

SQLSERVER读懂语句运行的统计信息

SQLSERVER读懂语句运行的统计信息 对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信息. 这些信息对分析问题很有价值. 1 SET STATISTICS TIME ON 2 SET STATISTICS IO ON 3 SET STATISTICS PROFILE ON SET STATISTICS TIME ON 请先来看看SET STA

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句 续接"veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象",地址:点击打开链接 环境: Item Source System Target System Platform Red Hat Enterprise Linux Server release 5.4 Red Hat Enterprise Linux Server release 5.4 Hos

逻辑推理:在一个100条语句的列表中,第n条语句是“在这个列表中,恰有n条语句为假”,可以得出什么结论?

<离散数学及其应用>第六版1.1练习题第43题的个人分析 题目:在一个100条语句的列表中,第n条语句是"在这个列表中,恰有n条语句为假"..........     a)从这些语句中得出什么结论     b) 若第n条语句是"至少有n条语句为家",结论是什么     c)假设包含99条语句,回答b 答案网上都有,我是给出自己的分析过程:(思路大概是:如果这句话话为真,推出这句话的内容为真,由这句话的内容又能推出其余话的是不是为真,再根据其余话的内容来判

SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行)

原文:SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行) 前言 上一篇我们分析了查询Hint的用法,作为调优系列的最后一个玩转模块的第一篇.有兴趣的可以点击查看:SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行) 本篇继续玩转模块的内容,同样,还是希望扎实掌握前面一系列的内容,才进入本模块的内容分析. 闲言少叙,进入本篇的内容. 技术准备 数据库版本为SQL Server2012,利用微软的以前的案例库(Northwind)进行分析,

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete) SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx 功能:根据与源表联接的结果,对目标表执行插入.更新或删除操作.例如,根据在另一个表中找到的差异在一个表中插入.更新或删除行,可以对两个表进行同步. 我们看一个例子,假如,有一总产品列表,一

Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)

文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html 本文仅是个人经验总结,若有错误欢迎指教! 最近要做一个跨平台的项目,同时也涉及到网络数据传输,所以考虑采用Qt和Libevent. 1.vs编译libevent 参考网上众多通过VS编译Libevent的文章(http://www.cnblogs.com/luxiaoxun/p/3603399.html),成功编译得到了?libevent.lib.libevent_core.lib

Python 一条语句如何在多行显示的问题

在做python学习的时候,我照着pdf,敲代码,遇到一大难题: return render_to_response('index.html',{'title':'my page','user':user,'book_list':book_list}) html: {{book_list}} 第一行代码,在我的vim编辑器里面,换行显示, 我启动server,然后通过browser 浏览,老是报错,可是,我发现,代码没错哈,然后搜资料,说用 “\" 就这样,保存后,重新刷新browser,就ok

SQL服务器在执行这条语句时会先进行运算然后执行

1.打开地址,我们可以看到是一个正常的页面. 2..然后在地址后面加上-1,变成:http://site/news.asp?id=123-1,若返回的页面和前面不同,是另一个正常的页面,则表示存在注入漏洞,而且是数字型的注入漏洞 3.若在地址后面加上 -0,变成 http://site/news.asp?id=123-0,返回的页面和之前的页面相同,然后加上-1,返回错误页面,则也表示存在注入漏洞,而且是数字型的. 4.若在地址后面加上'%2B',变为:http://site/news.asp?