2012-05-25 27 views
6

Tek bir kullanıcı tıkladığında alınması gereken binlerce kayıt var. Şu anda bana çok yavaş sonuçlar veriyor, uzun bir süre beklemek zorundayım. Hazırda bekletme özelliğini kullanarak bu sonuçları almanın bir yolu var mı?Java'da hazırda bekletme performansı nasıl geliştirilir?

Seçme sorgusu olan bir yöntemin her dakika çalışacağı bir durum var. Hibernate'in bana yavaş bir sonuç verdiği yer burası. MySQL ile Hazırda Beklet özelliğini kullanıyorum.

+2

Bu biraz "Bir ip parçası ne kadardır?" Demek gibi bir şey. HQL'iniz hakkında daha fazla bilgiye ihtiyacımız var. Sadece basit bir "nerede" cümlesi şeyleri hızlandırabilir. – david99world

+0

Herhangi bir önbellek kullanıyor musunuz? (hibernate.cache.user_query_cache = true) – stzoannos

+0

Veritabanından çok sayıda veri almak sadece yavaş, Hazırda beklet veya değil. Aldığınız satır sayısını azaltın, örneğin, bir seferde birkaç yüz satır sunarak. Kullanıcılarınız zaten aynı anda tüm 10000 satıra bakamazlar, bu yüzden onlara bu kadar çok bilgi sunmanın bir anlamı yoktur. – dasblinkenlight

cevap

6

Ortak uygulama 2. düzey önbellek ve sorgu önbellek sağlayan söylemek bir web sayfasında kayıtları görüntülemek ve tek seferde kayıtların bir kısmını almak için varsa Pagination gitmek öneririz. Verileriniz db'den değil memmory'den okunacaktır.

o here

Diğer şeyleri

İyi makale yararlı olabilir:

1 İndeksleme - Eğer/sipariş arıyorsunuz alanlar için dizin oluşturmak zorunda - - nerede ve sipariş durumunda olduğu bu artırabilir arama hızı 10 kez

2 Denormalizasyon - eğer çok fazla katıldığınız varsa, bazı denormalizasyonlar (hepsini tek bir masaya koyarak) yardımcı olabilir. Fakat bu her şey başarısız olduğunda nihai çözüm olmalı.

+0

Çok teşekkür ederim bu –

+0

çalışacağım Seçme sorgusu olan bir yöntemin her dakika çalışacağı bir durum var. Bu, hazırda beklemeden yavaş sonuç veren bir yerdir –

+0

2. düzey önbellek ve sorgu önbelleği etkinken, sorguyu ilk çalıştırdıktan sonra varlıkları doldurur. Yani ilk kez yavaşlayabilir. Ama bir dahaki sefere önbelleğe alınmış değerleri kullanacaktır. Hafızadan okuma daha hızlı olacaktır – alexey28

İlgili konular