Monday, July 27, 2009

EN COK KAYNAK TÜKETEN SORGUYU BULMAK

EN COK KAYNAK TÜKETEN SORGUYU BULMAK
-- en cok kaynak tüketen sorguyu bulmak için aşağıdaki sorguyu kullanabiliriz.
--bu sorgu disk kullanımını bize göstermektedir.
--önce denemeler yapmak için hazırlık yapalım.

--bir tablo yaratalım. bu tabloya insert işlemi yaparak diski ne kadar yoruğunu göreceğiz.
create table kaynak_tuketim_deneme as select * from all_objects


--şimdi tablomuza sürekli olarak kayıt ekleyelim.
DECLARE

BEGIN

  FOR i IN 1.. 10 LOOP

    INSERT INTO kaynak_tuketim_deneme

    SELECT *

    FROM   all_objects;

    

    COMMIT;

  END LOOP;

END;


--çalışan sorgumuzu görmek için

SELECT /*+ ORDERED */ v.osuser,

                      v.schemaname,

                      Substr(Rpad(s.sql_text,64),1,64) sqltxt

FROM     v$session v,

         v$sqltext_with_newlines s

WHERE --v.osuser = 'aates'

 s.address = v.sql_address

         AND s.hash_value = v.sql_hash_value

ORDER BY piece


--ne kadar kaynak kullandığını hangi sorgunun ne kadar yet tükettiğini görmek için

SELECT *

FROM   (SELECT   Substr(a.sql_text,1,50)                                 sql_text,

                 Trunc(a.disk_reads / Decode(a.executions,0,1,

                                                          a.executions)) reads_per_execution,

                 a.buffer_gets,

                 a.disk_reads,

                 a.executions,

                 a.sorts,

                 a.address

        FROM     v$sqlarea a

        ORDER BY 2 DESC)

-- Burada ne kadar?n? listelemek istedi?imizi belirtiyoruz.

WHERE ROWNUM <= 10;



-- son olarak arkamızda pislik bırakmayalım.
drop table kaynak_tuketim_deneme

No comments: