Büyük sorguya veritabanı trafiğini sınırlamak için en iyi yaklaşım?

2 Cevap php

Ben birkaç saatte uzaktan güncellenebilir (hiçbir belirli bir zaman dilimi üzerine) ve ben bunun idaresi üzerinde hiçbir kontrole sahip olduğu ile ben uğraşıyorum bir veritabanı var. Ben web istemcileri bunun içindeki bilgileri görüntülemek için bağlanma var. Bu istemciler (PHP ve JavaScript kullanarak kodlanmış) veritabanının kendisi ve çek vb aramalarını çok ve çapraz başvuruda içeren oldukça uzun bir sorgu içerecektir herhangi bir değişiklik olmayabilir olsa bile çok sık (sabırsız kullanıcılar) veritabanı denetimi olabilir .

Yani veritabanı sorguları azaltmak ve tutmak için işler ne müşteriler aslında veritabanında tüm sorguyu çalışacak sayısını sınırlamak için en iyi yol olacağını hızlı ol?

Şeyleri berrak hale getirmek için, ben veritabanı değiştirerek yol yok, ben sadece bunu sorgulayabilirsiniz. Ama web istemci kaynağı üzerinde tam kontrole sahip.

2 Cevap

Eğer web uygulaması üzerinde kontrolü var mı? Kullanıcıların oturum ve oturumları onlarla ilişkili varsa, bir kullanıcı en son veritabanı sorgulanan beri zaman önbelleğe ve istek son sorgu beri bazı eşik aralığı altında ise yeni verileri geri teslim reddediyorum olabilir.

PHP Sessions

I Zend_Cache bakmak istiyorum.

Her sorgu yalnızca (kolayca değiştirilebilir) önbellek ömrü boyunca bir kez çalışacaktır. Aynı sorgu kullanıcı başına en az bir kez çalışacak beri Sessions kalıcı bir çözüm değildir. Oturumlar da kolayca yenilenebilir.

Sen sonuç kümesi önbellekte varsa kontrol etmek isteyeceksiniz. Değilse, benzersiz bir tanımlayıcı ile sonuç kümesini önbelleğe:

$query = "SELECT * FROM really_big_table";
$cache_query = md5($query);
if(!$result = $cache->load($cache_query))
{
     $result = $db->fetchAll($query);
     $cache->save($result, $cache_query);
}

Bir önbellek kullanarak veri tüm kullanıcılar için güncelleştirilmiş zaman için kendi zaman çerçevesini belirliyor.