2010-04-09 32 views
8

Lezzetli web sitesinden büyük miktarda veri içeren bir proje üzerinde çalışıyorum. Mevcut veriler "Tarih, Kullanıcı Kimliği, URL, Etiketler" dir (her bir yer imi için).Çok büyük miktarda veri için veritabanı tasarımı

Veritabanımı 3NF'ye normalleştirdim ve kombinasyon halinde kullanmak istediğimiz sorguların doğası gereği 6 tabloya inildim ... Tasarım gayet iyi görünüyor. Veriler veritabanında yer alıyor, çoğu sorgunun cevabı almak için en az 2 tabloya katılmamız gerekiyor, bazen 3 veya 4. İlk olarak, herhangi bir performans sorunumuz olmadı, çünkü test konuları için çok fazla eklememiştik. veri tabanına. Artık çok fazla veriye sahip olduğumuza göre, son derece büyük masalara katılmak çok zaman alıyor ve gerçek zamanlı olması gereken projemiz için bu bir felaket.

Bu büyük şirketlerin bu sorunları nasıl çözdüğünü merak ediyordum. Tabloları normalleştirmek gibi görünüyor sadece karmaşıklık ekler, ancak büyük şirket veritabanlarında büyük miktarda veriyi nasıl ele alıyor, normalleştirme kullanmıyorlar mı?

Teşekkürler. Eğer büyük şirketleri (genellikle) konusundaki yaklaşımını sordu yana

cevap

13

bu:

Genellikle yaşıyor ve şirketin kullandığı veritabanı nefes bir dba (veritabanı yöneticisi) var.

Bu, tabloların nasıl en iyi şekilde tasarlanacağından, RAID denetleyicisinin veritabanında sorunlara neden olabilecek bir firmware düzeltmesini bilmek için sorguları/dizinleri/OS/sunucuyu profil ve ayarlayarak her şeyi bilen insanlara sahip oldukları anlamına gelir.

Ne tür bir ayarlama yaptığınız hakkında çok fazla konuşmuyorsunuz, ör.

  • MyISAM veya InnoDB tablolarını kullanıyor musunuz? Performansları (ve özelliklerinin en az değil) farklı iş yükleri için radikal olarak farklıdır.
  • Tablolar, çalıştırdığınız sorgulara göre doğru şekilde dizine eklenmiş mi?
  • Tüm sorgularınızda EXPLAIN komutunu çalıştırın - hangi anahtarların seçilip seçilmediğini, uygun anahtarların seçilip seçilmediğini, sorguları karşılaştırmasını sağlamanıza yardımcı olacak (SQL, aynı şeyleri başarmak için sizi çok yoldan bırakır)
  • sorgu-önbelleği ayarladınız mı? Bazı iş yükleri için sorgu önbelleği (varsayılanı açık) önemli ölçüde yavaşlamaya neden olabilir.
  • Kutunuzda ne kadar bellek var ve bundan yararlanmak için mysql ayarlanmış mı?
  • Veritabanına yönelik bir dosya sistemi ve baskın düzeni kullanıyor musunuz?
  • Bazen biraz normalleştirme gerekiyor.
  • Farklı veritabanı ürünlerinin farklı özellikleri vardır, MySQL bazı worlkoad'lar için şaşırtıcı derecede hızlı olabilir ve diğerleri için yavaş olabilir.
+3

Cevabınız için teşekkür ederiz. Dürüst olmak gerekirse, burada bahsettiğin şeyleri düşünmüyordum. Şimdi, veritabanını tasarlarken çok fazla göz ardı ettiğimi anladım. Veritabanı MyISAM kullanıyor. Bahsettiğin şeyleri okuyacağım. çok teşekkürler – Hossein

İlgili konular