Bu bilgileri doğrudan MySQL'de tutmak ve güncellemekte herhangi bir sorun olmamalıdır. Saatte 3000 isabet, saniyede bir sorgudan daha az anlamına gelir. InnoDB depolama motorunu kullanarak bu tablo kilitleme sorunlarını kaldırmalıdır. Bununla birlikte, InnoDB'nin birçok seçeneği vardır ve verimli çalışmak için doğru şekilde yapılandırılması gerekir - bu önemlidir. Birincil anahtar (type, period, id)
olacağını
id - page id
type - period length, could be 'day', 'week', 'month'
period - date when period starts, could be integer written as YYYYMMDD or YYYYMM
- depending on the contents of 'type' field
count - hit count for a url over given period
:
Yorumlarınıza dayanarak ben aradığınız yapısı gibi bir şey düşünüyorum. Verimli için (id, period)
ve (type, period, count)
üzerine de endeksler:
SELECT *
FROM ...
WHERE type='week'
and period = 20120409
ORDER BY count DESC
sayfa oluşturulduğunda, sayısı ile her dönem için insert kayıtları = 0. sayfa isabet aldığında, basit bir güncelleştirme çalıştırın:
UPDATE table
SET count = count + 1
WHERE id = $page_id
AND period IN (201204, 20120409)
Her üç kaydı da 'gün', 'hafta' ve 'ay' istatistikleri için günceller.
Sanırım işlemler iyi olabilir. – hjpotter92
Bu analitik amaçlar için mi? Öyleyse, görünümleri izlemek için Google Analytics veya Jetpack gibi ücretsiz bir hizmet kullanmayı düşünebilirsiniz. –
Önce verileri önbelleğe almak ve sonra da bazı görünümlerden sonra veritabanına güncellemek için APC önbelleğini kullanmayı düşünmeli miyim? –