Dizideki saklamak veya birden fazla db sorguları kullanma

4 Cevap php

Bir php / mysql sistemi içinde biz yapılandırma değerleri bir dizi (yaklaşık 200) var - bu çoğunlukla booleans veya ints ve bu sayfa başına ve sayfa 2 veya 3 sütun olup olmadığını sonuçların sayısı olarak mağaza şeylerdir. Bu tek bir mysql tabloda depolanır ve biz onlar muhtemelen bu yapılandırma tabloya yaklaşık 100 istekleri kadar olabilir orada bazı sayfaları yükler üzerinde, istenen bu değerleri döndürmek için tek bir işlevi kullanın. Bu sistemi kullanarak sitelerin sayısı ile bu isteklerinin potansiyel binlerce bu değerleri almak için her saniye demektir. Soru bu yöntem mantıklı olup olmadığını veya sayfa başına tek bir isteği gerçekleştirmek ve bir dizi tüm yapılandırmaları saklamak ve burada yerine her zaman almak için tercih olup olmayacağıdır.

4 Cevap

Bu tür memcache, APC ya da başka bir önbellek kullanın. , Bir kez ayarları yüklemek önbelleğe ve bir tek nesne ile oturumları aracılığıyla paylaşabilirsiniz.

Sorgu önbellek kaydedilmiş olsa bile, o ve üzerinde veritabanını sorgulamak için zaman ve kaynak israfı. Aksine, değerlerini değiştiren herhangi bir talep üzerine, bu sefere birisi ondan bir değeri istediğinde derhal tekrar böylece bellekte önbellek geçersiz.

Eğer MySQL sorgu önbelleği, sizin değerler bellekte önbelleğe alınır ve temel tablolardaki sorgu veya veri olmadıkça MySQL bellekten bir anlık cevap verecektir seçer sorgu etkinleştirirseniz değiştirdi.

Bu performans ve yönetilebilirlik için hem de mükemmel.

Sorgu sonuçları oturumları arasında yeniden olabilir: anlamı, 1000 oturumları varsa, size veri 1000 kopyalarını tutmak gerekmez.

Bunun için memcache kullanarak düşünebilirsiniz. Ben (hatta sorgu önbelleği ile) birden fazla DB sorguları daha hızlı olacağını düşünüyorum, ve sen onları almak için bir veritabanı bağlantısı gerekmez.

Sadece belleğe düz bir dosyadan yükleyerek düşünebilirsiniz, bu size sürüm kontrolü config değerleri için fırsat tanıyor.

Ben defintely Bunun için memcache öneriyoruz. Biz benzer bir kurulum var ve noticably o sunucu üzerindeki kaynak kullanımını aşağı getirdi.