Eğer bir veri deposu olarak sunucunun kendi günlüklerini kullanamaz özel bir sebebi var mı? Bir IIS veya Apache access_log parçalıyorlar ve istediğiniz bilgileri ayrıştırmak için oldukça önemsiz bulunuyor.
Eğer erişim günlüğüne belirli bir alt kümesi sadece ilgileniyorsanız (örn: gerçek sayfalarında vurur ve images / javascript / css / flaş / ne olursa olsun dosyaları görmezden), sadece bu özel hit ayrıştırmak olabilir. Sonra azaltılmış veri başka bir sunucu üzerinde MySQL içine ayarlamak falan alayım.
Bundan sonra, veritabanı sizin için veri madenciliği yapmak gibi, ilgili hit verileri depolamak ve bir ter bozmadan bütün gruplama / sayım işlemek için çok daha iyi bir yerdir. Eğer birkaç yüz milyon hit yüklemek ve başına IP veri kaydını tutmaya çalışıyoruz ne olur düşünün - in-bellek veri seti oldukça hızlı bir şekilde büyüyecek ve kullanılabilir belleği aşabilir. Veritabanında ... toplayıcı / sayma / averageing / yapıyor vs sizin için tüm bu endişeleri idare edecek; Sadece sonradan sonuçlarını yorumlama konusunda endişelenmenize gerek.
Ve sadece bir optimizasyon ipucu olarak: işaretsiz bir tamsayı alanında değil, varchar (15) olarak IP adreslerini saklamak. Onlar gerçekten sadece 32bit numaraları demektir. Eğer alt ağ maskeleri ve etajer uygulamak için çalışıyoruz kerelik ilk ascii-> sayısal çeviri havai Analiz aşamasında tekrarlanan isabet yanında son derece önemsiz olacaktır:
INSERT INTO log (ip) VALUES (INET_ATON('10.0.0.1'));