Merhaba , bir veritabanından her saniye bağlanıb verileri almak için performans açısından kullanılabilecek en iyi yol hangisidir ? Teşekkürler

soruldu: 09 Mar '15, 02:32

Javatar's gravatar image

Javatar
25112
cevap kabul oranı: 0%

Aldığınız veriyi get etme süreniz nedir? Eğer istekler çoğaldıkça io işlem süresi linear olarak artış gösteriyorsa, connection pool limitini aşabilirsiniz. Buda down olmak demektir.

(09 Mar '15, 07:48) Turgay Can Turgay%20Can's gravatar image

bir saniye

(09 Mar '15, 13:16) Javatar Javatar's gravatar image

Timer ve Thread kullanılması gerektiğini düşünüyorum. Eğer veri çok ise daha performanslı olması açısında ORM kullanmadan (doğal olarak reflection ve cast işlemleri ile zaman kaybedilmeyecektir) işlem yapmanı tavsiye ederim.

Ayrıca her saniye bu işlemi yapacak demişsin. Bu çok sık değil mi? İlk işlemin bitmeden ikincisi başlayacak,ikincisi bitmeden üçüncüsü başlayacak...bu durum çakışmalara sebep olabilir.

İyi çalışmalar

permanent link

cevaplandı: 09 Mar '15, 07:41

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

Firebird-den aliyorum jdbc ile . 1 saniyede olmasi gerekir cunki veritabani her saniye deyisiyor

(09 Mar '15, 13:17) Javatar Javatar's gravatar image

maximum 2 - 3 saniye olabilir

(09 Mar '15, 13:18) Javatar Javatar's gravatar image

Thread-in icinde sonsuz while icinde veri aliyorum

(09 Mar '15, 13:20) Javatar Javatar's gravatar image

ve jvm heap size doluyor :(

(09 Mar '15, 13:20) Javatar Javatar's gravatar image

Örnek kod paylasabilir misin. Daha cok yardımcı olabiliriz

(09 Mar '15, 14:27) Müslüm ÖZTÜRK M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

while(true){ list = sql.getList(); }

neredeyse boyle birsey

(09 Mar '15, 15:41) Javatar Javatar's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster
while(true){
  list = sql.getList();

}

böyle bir kodu çok doğru bulmuyorum, daha güzel bir çözümü olmalı.En azından db de bir değişiklik olduğunda bu değişikliği yakalamak daha güzel olurdu. Oracle kullanıyor olsaydın buradaki kod parçaları sana yardımcı olurdu. Belki benzer birşey firebird de de vardır.Bi araştır derim.

Şu anki kodu en azında aşağıdaki gibi değiştirmeni öneririm:

  while (true) {
            synchronized (this) { //kod kitlenir ve bu işlem bitmeden bir daha bu kodu çalıştırmaz
                list = sql.getList();
            }
        }

İyi çalışmalar

permanent link

cevaplandı: 09 Mar '15, 16:38

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

değiştirildi: 09 Mar '15, 16:39

Bu işi database üzerinde halletmezdim..

documented base db yada bir cache server ile değişen dataları cache üzerinde değiştirirdim..

Cache(Hazelcast, Couchbase) bana göre en makul çözüm, ram üzerinden datayı değiştirip, öyle get işlemi yapmak performans açısından daha iyi.

Değişen yada yeni gelen data için ise; Bir job yazıp 10 dk'da bir cache üzerinden view ile değişen datayı alıp, database'e insert/update yaptırırdım.

senkron bloklar jvm'i şişirecektir. pesimistic lock kötü bir yaklaşım olur optimistic lock bir nebze daha iyi bir yaklaşım. Uygulamanın down olmasından daha iyidir.

permanent link

cevaplandı: 09 Mar '15, 17:41

Turgay%20Can's gravatar image

Turgay Can
8.4k63799
cevap kabul oranı: 18%

Cache kullanma imkanın varsa o şekilde yap. Cache'de varsa oradan hemen alırsın. Yoksa db'den çekip cache'e atarsın. Zaten cache'in amacı db'deki yükü azaltmaktır.

permanent link

cevaplandı: 10 Mar '15, 03:46

kodmanyagha's gravatar image

kodmanyagha
3.1k132852
cevap kabul oranı: 15%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×8

Soruldu: 09 Mar '15, 02:32

Görüntüleme: 616 kez

Son güncelleme: 10 Mar '15, 03:46

powered by BitNami OSQA