>sqlplus hr/hr@xe
SQL*Plus: Release 10.2.0.1.0 - Production on ...
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> set autotrace traceonly statistics;
SQL> alter system flush shared_pool;
System altered.
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from table_a where column_a = 1;--first call
Statistics
----------------------------------------------------------
2224 recursive calls
0 db block gets
638 consistent gets
49 physical reads
0 redo size
335 bytes sent via SQL*Net to client
376 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
57 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> select count(*) from table_a where column_a = 1; --second call, cache affect
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
335 bytes sent via SQL*Net to client
376 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL>
Showing posts with label block buffer cache. Show all posts
Showing posts with label block buffer cache. Show all posts
11 November 2009
15 February 2006
Oracle Block Buffer Cache
Performans konusunda yapılan çalışmaların en başında, fiziksel olarak diske erişimin minimize edilmesi gelir.Bu da, çok istenen verilerin bellekte tutularak, istenildiğinde buradan kullanılması ile gerçekleşir.Bu noktada Oracle’nin sunduğu özelliklerden biri block buffer cache yapısıdır.Bu yapı bir nevi cache yapısıdır.SGA(System Global Area) içinde bulunur.
Oracle içinde veriler blocklarda tutulur.Block buffer cache de, Oracle’nin verileri okuduktan sonra veya yazmadan önce tutulduğu yerdir.
Burada kullanılan algoritma LRU(Last Recently Used, -En Son Kullanılan-) algoritmasıdır.Bu sayede en fazla istenen veriler, herhangi bir istenme durumunda daha hızlı getirilmesi için burada tutulur.Bunun için oraclenin gizemli X$ tablolaından faydalanılır.Şöyleki;
Öncelikle bir tablo oluşturalım.
BEGIN
CREATE TABLE oracle_oracle(x NUMBER);
INSERT INTO oracle_oracle (x) VALUES (90);
COMMIT;
END;
Bu tablonun hangi block içinde bulunduğu bulmak gerekir öncelikle.Şuan çalışılan schema SYS.
SELECT ext.block_id
FROM dba_extents ext
WHERE lower(ext.segment_name) = 'oracle_oracle' AND
ext.owner = 'SYS'
--BLOCK_ID
--40697
Şimdi tabloyu select ile çağıralım.
SELECT x FROM oracle_oracle
Bu select sonucunda oluşan duruma bakalım:
SELECT x.tch
FROM x$bh x
WHERE x.dbablk = 40697 AND
x.file# = 1
--istenme sayısı
--TCH
--4
Bir kez daha çağıralım ve sonuca bakalım:
SELECT x FROM oracle_oracle
SELECT x.tch
FROM x$bh x
WHERE x.dbablk = 40697 AND
x.file# = 1
--istenme sayısı artıyor
--TCH
--5
Yine istiyoruz
SELECT x FROM oracle_oracle
Son kez bakalım
SELECT x.tch
FROM x$bh x
WHERE x.dbablk = 40697 AND
x.file# = 1
--istenme sayısı daha da artıyor
--TCH
--6
Her çağırılışta sayının arttığını, LRU algoritmasının kullanıldığını daha iyi görüyoruz.
Kaynak : Thomas Kyte, One on One Oracle
Oracle içinde veriler blocklarda tutulur.Block buffer cache de, Oracle’nin verileri okuduktan sonra veya yazmadan önce tutulduğu yerdir.
Burada kullanılan algoritma LRU(Last Recently Used, -En Son Kullanılan-) algoritmasıdır.Bu sayede en fazla istenen veriler, herhangi bir istenme durumunda daha hızlı getirilmesi için burada tutulur.Bunun için oraclenin gizemli X$ tablolaından faydalanılır.Şöyleki;
Öncelikle bir tablo oluşturalım.
BEGIN
CREATE TABLE oracle_oracle(x NUMBER);
INSERT INTO oracle_oracle (x) VALUES (90);
COMMIT;
END;
Bu tablonun hangi block içinde bulunduğu bulmak gerekir öncelikle.Şuan çalışılan schema SYS.
SELECT ext.block_id
FROM dba_extents ext
WHERE lower(ext.segment_name) = 'oracle_oracle' AND
ext.owner = 'SYS'
--BLOCK_ID
--40697
Şimdi tabloyu select ile çağıralım.
SELECT x FROM oracle_oracle
Bu select sonucunda oluşan duruma bakalım:
SELECT x.tch
FROM x$bh x
WHERE x.dbablk = 40697 AND
x.file# = 1
--istenme sayısı
--TCH
--4
Bir kez daha çağıralım ve sonuca bakalım:
SELECT x FROM oracle_oracle
SELECT x.tch
FROM x$bh x
WHERE x.dbablk = 40697 AND
x.file# = 1
--istenme sayısı artıyor
--TCH
--5
Yine istiyoruz
SELECT x FROM oracle_oracle
Son kez bakalım
SELECT x.tch
FROM x$bh x
WHERE x.dbablk = 40697 AND
x.file# = 1
--istenme sayısı daha da artıyor
--TCH
--6
Her çağırılışta sayının arttığını, LRU algoritmasının kullanıldığını daha iyi görüyoruz.
Kaynak : Thomas Kyte, One on One Oracle
Subscribe to:
Posts (Atom)