Performans soru sql

5 Cevap php

Ben bir forum yapıyorum.

And I'm wondering if i should store the number of replies in the topic table or count the posts of the topic?
How much slower will it be if i use sql and count them? Lets say i have a billion posts. Will it be much slower? Im not planning on being that big but what if? How much slower would i be compared to stroing the num in topics?

Teşekkürler

5 Cevap

Db boyutu büyüdükçe daha yavaş olacaktır. Büyük sonrası tabloya sahip planlıyorsanız, konu tablodaki değer depolamak

Ben sadece biz 1 milyondan fazla kayıtları içeren bir tablo kullanarak sahip bir MySQL 4.0 kutunun üzerinde bazı testler koştu.

SELECT COUNT(*) FROM MyTable; ~ 1000000 22ms aldı

SELECT COUNT(*) FROM MyTable WHERE Role=1; ~ 800.000 3.2S aldı

{[(0)] 20} ~ 12 ms aldı

Bu durumda Rolü sütun endeksli ve bu uzaktan MySQL bağlanıyordu.

Ben mesaj tablo sorgu kez gerçekten bir sorun olmak için çok büyük almak zorunda olacağını düşünüyorum. Ben de bu konuları tablodaki sayısının önbelleğini koymak için bir ön-optimizasyon olduğunu düşünüyorum. Şimdi o olmadan inşa etmek ve if bunu bir sorun bunu değiştirmek için onun oldukça kolay bir güncelleme olur.

Bu ölçeklendirme etkileyecek gidiyor ve normalleştirme bir konudur edilir. Hardcore normalleşme inekler gereksiz veriyi neden çünkü konuyla ilgili mesajların sayısını tutmak gerektiğini size söyleyecektir. Ama sen orada saklayın yoksa numarayı getirmek için her yük ekstra bir sorgu yapmak gerektiğini akılda tutmak gerekir. Alternatif her güncellemede fazladan sorgu yapmak için / hemen hemen her zaman daha az sıklıkta seçin yıllardan daha ortaya çıkacağı, bunun yerine yerleştirin. Eğer çok fazla trafik desteklemek için bir site ölçek olarak bunu sonunda özellikle bu gibi durumlarda, bazı verilerin de-normalleştirmeye başlamak zorunda neredeyse kaçınılmaz olur.

Gereksiz veri doğal olarak kötü değil. Kötü yönetilen bir fazlalık olduğunu. Sürece senkronize çıkıyorum veri önlemek için yerinde uygun kontrolleri olduğu gibi o iplik üzerinde mesaj sayıda saklama potansiyel yararı IMO kod ekstra biraz değer.

Ben bu çok çok çok sık içeri bir konu tabloda değerini saklamak, o zaman (siz kayıtları silin veya eksiltme) artırmak için gerek konum bulabilirsiniz veri bastırıyor konum nasıl hızla bağlıdır düşünüyorum .

Endeksleri (endeksler?) Eğer verilerin küçük bir alt kümesini saklayabilirsiniz gibi, güzel bir seçenek olabilir, ve daha zengin bilgilere erişmek mümkün olabilir. Ben düz oraya gitmek ve bunları kolayca güvenebilirsiniz çünkü, telefon rehberinde kaç tane Farleys saymak oldukça hızlı olabilir gerçeğini göz önünde bulundurun.

Genellikle olduğu gibi Yani, cevap 'Duruma göre değişir' muhtemelen.

Ben tabloda sayıları depolamak yerine, onlara her zaman sayma gibi. Böyle kolay bir işlemdir ve bunu almak olduğunuzda bunu gösteren gider düşünmek zorunda kalmazsınız. Bir forum ile bunu mümkün olduğunca ucuz yapmak için mantıklı böylece yine de değişiyor gidiyoruz daha sık görüntüleniyor gidiyoruz. Bu biraz erken olabilir ancak daha sonra bazı baş ağrısı kurtarabilir.