大家好,今天小编关注到一个比较有意思的话题,就是关于v sqlarea保存多久的的问题,于是小编就整理了3个相关介绍的解答,让我们一起看看吧。
大小表关联查询语句速度很慢,简要描述下如何去分析慢的原因?
这种情况有很多可能性,首先,你的服务器的负载情况会影响到你的数据读取速度的,如果数据库服务器执行的进程过多,会导致查询速度下降很多。
另外,第一次执行同一个SQL的时候,都会比较慢一些,再次执行的时候,由于数据等还在内存内,会速度快很多。
再者,在Oracle中,有共享SQL语句的机制,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享. 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它 和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径. 这样也会大大的提高效率。
SGA是什么?
SGA(System Global Area)是Oracle数据库服务器的内存结构,它在启动时被初始化,用于存储重要的全局信息。
SGA内部由数据缓冲区,进程共享池,库缓冲池,大型池,***锁列表,序列号生成器,日志缓存,重做日志缓存和共享池子组成。
数据缓冲区用于缓存磁盘上的数据,以提高读取性能;进程共享池用于存储共享SQL语句;库缓冲池存储表空间中的数据;大型池存储大对象;***锁列表存储正在执行的查询;序列号生成器为应用程序生成唯一的ID;日志缓存用于存储数据库更改;重做日志缓存用于恢复数据库。
怎么查看oracle数据库表结构的修改记录?
可以通过sql语句跟踪oracle数据库中的操作状态:
(1)select * from v$sqlarea; 可以跟踪sql语句的执行过程,如果想跟踪某个时间点前后的语句,可以通过first_load_time时间进行控制。
select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'
;这个方法查询结果每条记录显示一条查询语句,且只能查询sql_text小于1000字符的,多余的会被截断。
(2)select * from v$sqltext;跟踪时,将把整个查询语句都记录到数据库中,记录中包括地址、分片等,可以通过结合(1),获取到要跟踪的sql语句的起始部分,然后通过这条语句,获取到整个地址中的完整的sql语句。
select * from v$sqltext where sqltext like '%单元名称%'; 获取到包含的所有记录,找到自己想跟踪的那条sql语句的起点,记录下address字段的值,以备下面使用。
select * from v$sqltext where address = '上面查记录的地址字段'; 这样就获得了整条sql语句在v$sqltext中的片段,拼接一下就可以得到跟踪的完整的sql语句了。本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ocean_helen/archive/2010/11/27/6038782.aspx
到此,以上就是小编对于保存的sql语句的问题就介绍到这了,希望介绍的3点解答对大家有用。