Read by Other Session Wait Events
- Read by other session wait event olayında "read" görünmesinin ana nedeni, aynı veri bloklarını, tablo veya index blokları olsun veya olmasın, birden çok session ın okumak istediği ve şu anda bu blokları okumakta olan session ın arkasında beklemek zorunda olduğudur. Bir session ı bekleyen data bloklarını aşağıdaki komutu çalıştırarak bulabilirsiniz:
SQL> select p1 "file#", p2 "block#", p3 "class#"
from v$session_wait
where event = 'read by other session';
- Beklenen bloğu "blok#" sütunundan aldıktan sonra diğer oturum beklemelerine göre okumaya neden olan kesimleri (tablo veya index) belirlemek için aşağıdaki sorguda kullanabilirsiniz.
SQL> select relative_fno, owner, segment_name, segment_type
from dba_extents
where file_id = &file
and &block between block_id
and block_id + blocks - 1;
- Hot blokları ve ait oldukları segmentleri belirledikten sonra, bu veri bloklarını ve segmentleri kullanan sorguları tanımlamanız ve mümkünse bu sorguları ayarlamanız gerekir.
Ayrıca, hot bloklardaki satırları silmeyi ve tekrar eklemeyi deneyebilirsiniz.
- Hot blokların her birindeki veri miktarını azaltmak ve böylece bu bekleme türlerini azaltmak için, daha küçük bir blok boyutu olan yeni bir tablespace oluşturmaya ve segmenti bu tablo alanına taşımayı deneyebilirsiniz.
Ayrıca low cardinality indexlerin kullanılıp kullanılmadığını kontrol etmek iyi bir fikirdir, çünkü bu tür indexler, veritabanını çok sayıda veri bloğunu buffer cache e getirecektir ve buda "read by other session wait event" sebeb verecektir.
Mümkünse, low cardinality indexlerini high cardinality sütundaki bir dizinle değiştirin.
Nasıl Çalışır:
- Read by other session wait event olayı, bir veya daha fazla oturumun, aynı veri bloklarını diskten SGA'ya okumak üzere başka bir oturum beklediğini gösterir. Bu beklemelerin çok sayıda olması performansı yavaşlatacaktır.
İlk hedefiniz, gerçek veri bloklarını ve blokların ait olduğu object leri tanımlamak olmalıdır.
Örneğin, bu beklemeler, aynı index bloklarını okumaya çalışan birden fazla oturumdan kaynaklanabilir.
Aynı tabloda aynı anda birden fazla oturum full table scan gerçekleştirmeye çalışıyor olabilir.