English 中文(简体)
页: 1
原标题:Oracle hard parse

我们发出一份准备的声明,需要就 d采取多项行动,因此所有这些q言都附在像BEGIN-END一样的BEGIN-END栏中。

BEGIN
 DELETE FROM...WHERE A=?..
 UPDATE TABLE...WHERE B=?..
END;

But many reviewers said this will result in a hard parse. From my understanding hard parse is when an sql is not found in the shared pool, then the syntax, execution plan ..everything needs to be calculated again, but here shouldn t Oracle treat them as individual sql statements. How can I find out that oracle will do a hard parse or not on a given sql statement?

最佳回答

Bin变数在PL/SQL区进行工作,在K.表中也是如此。

可以通过在休息室做简单发言来测试这一点,然后看v$sesstat

建立一个简单的表格,用于插入和删除。 2. 初步 par计。

create table test1(a number);

--Flush the pool, or else this test won t be repeatable.
alter system flush shared_pool;

select value, name
from v$sesstat natural join v$statname
where sid = sys_context( userenv ,  sid )
    and name in ( parse count (total) ,  parse count (hard) );

47  parse count (total)
5   parse count (hard)

这正是我们所期望的:

begin
    for i in 1 .. 10000 loop
        execute immediate  insert into test1 values( ||i|| ) ;
    end loop;
    commit;
end;
/

select value, name
from v$sesstat natural join v$statname
where sid = sys_context( userenv ,  sid )
    and name in ( parse count (total) ,  parse count (hard) );

10072   parse count (total)
10007   parse count (hard)

具有变量的PL/SQL区并非总是硬木。 请注意, par计是累积的,在此仅略有增加。

begin
    for i in 1 .. 10000 loop
        execute immediate 
         begin
            delete from test1 where a = :i;
        end; 
        using i;
    end loop;
    commit;
end;
/

select value, name
from v$sesstat natural join v$statname
where sid = sys_context( userenv ,  sid )
    and name in ( parse count (total) ,  parse count (hard) );

10106   parse count (total)
10019   parse count (hard)
问题回答

追踪贵会议执行该守则的情况。 停机坪,检查区数。

你们是否使用具有约束力的变数,还是使用字面?

建议的变数是,当你使用——改变——字面,这是造成 par平的因素之一。 改变字面字面,确实贬低了你的表现,使用了约束性。

http://www.you Programme.com/watch?v=1oddFEyUAjs” rel=“nofollow” OLTP Performance - The Trouble with Parsing





相关问题
what is wrong with this mysql code

$db_user="root"; $db_host="localhost"; $db_password="root"; $db_name = "fayer"; $conn = mysqli_connect($db_host,$db_user,$db_password,$db_name) or die ("couldn t connect to server"); // perform query ...

Users asking for denormalized database

I am in the early stages of developing a database-driven system and the largest part of the system revolves around an inheritance type of relationship. There is a parent entity with about 10 columns ...

Easiest way to deal with sample data in Java web apps?

I m writing a Java web app in my free time to learn more about development. I m using the Stripes framework and eventually intend to use hibernate and MySQL For the moment, whilst creating the pages ...

join across databases with nhibernate

I am trying to join two tables that reside in two different databases. Every time, I try to join I get the following error: An association from the table xxx refers to an unmapped class. If the ...

How can I know if such value exists in database? (ADO.NET)

For example, I have a table, and there is a column named Tags . I want to know if value programming exists in this column. How can I do this in ADO.NET? I did this: OleDbCommand cmd = new ...

Convert date to string upon saving a doctrine record

I m trying to migrate one of my PHP projects to Doctrine. I ve never used it before so there are a few things I don t understand. In my current code, I have a class similar to this: class ...

热门标签