Merhabalar herkese,
Küçük küçük aldığımız notlarımızdan bu yazımızda da devam edeceğiz.
Tabloların analizini güncel tutmanın önemli oldugunu söylemiştik.
BEGIN
DBMS_STATS.gather_table_stats (
ownname => 'schema_name',
tabname => 'table_name'
);
END;
ile otomatik istatistik aldırabiliriz.Guncel olmali bu yuzden etl ler bittikten sonra bir jobla tetiklenir.
Oracle Hintler :
select /*+first_rows_100*/ * from hr.tablo;---> ilk 100 kaydi cache alir.
tumunu almakla ugrasmaz cunku cacheden sonra da degeri bize donecektir.
/*+ordered*/ -->benim istedigim sirada joinle demek performans sıkıntısı yaratabilir.Normalde da Oracle optimizer karar veriyor.
tabloları tanıyorsak ve cok fazla tablonun oldugu bir senaryoda optimizer a brıkalımdan yazilabilir.Zira Optimizer da bu joinleri yaparken karşılaştırmalar yapıyor ,maaliyet oranları çıkarıyor ona gore azdan çoğa dogru yapıyor joinleme sırasını.
select /*+ordered*/ * from a,b,c,d,e
where a.c=b.d;
/*+leading(a,b)*/:hele bir a ile b yi joinle de gerisini sen halledersin zaten optimizer demek.
Not:
select * from hr.employees where employee_id='100';--> yanlis data tipi costu yukseltir,convert etnekle ugrasmamali,1 kayit için tum kayitlari cast ediyor bu da sorgunun okunma suresini ve costunu artırır.
Örnek senaryo :
create table tip
(
a varchar2(20),
b char(20)
);
insert into tip values ('Ali','Ali');
select * from tip where a=b --->esit çikmiyor biri 3 bytelik Ali digeri 20 bytelik.
select * from tip where a=trim(b) --->esit çikmasi için trim yapılabilir.Trim boşlukları siler.
select /*+use_hash(emp,dept)*/ * from employee emp ,department dept
where emp.dep_id =dept.dep_id;
Tablo büyüdükçe hash join kullanilmalidir./*+use_hash(emp,dept)*/ yapıyorsanız ve explain planda bunu göremiyorsanız memoryde sıkıntı vardır diyebiliriz.
Not:
Oracle da joinlenecek tablolarin sırasi önemli degil optimizer cost maaliyetini otomatik hesapliyor.
Subquerylere gore join yapmak daha iyidir.
Bir sonraki yazıda görüsmek dileğiyle...
Home
» first_rows(n)
» gather_table_stats
» leading
» optimizer
» oraclehintler
» ordered
» performance tuning
» tablodaanaliz
» trim
» usehash
» Kısa Kısa Notlar-3
Kısa Kısa Notlar-3
Yazar : Burhan Delice
| Pazar, Ocak 22, 2017
Yorum Yapılmadı
Etiketler:
first_rows(n),
gather_table_stats,
leading,
optimizer,
oraclehintler,
ordered,
performance tuning,
tablodaanaliz,
trim,
usehash


Yorum Gönder