Ne backend mysql kullanarak bir web sitesi için ortalama ya da yüksek yük düşünülebilir?

6 Cevap php

Ben bir web sitesi projesi, kabaca% 10 yaşındayım ve ben veritabanında atıyorum yükün ne tür anlamaya çalışıyorum. Bir kullanıcı oturum açtığında, ben her dakika tetikleyen pek çok işlevleri vardır, ve birisi sayfasını ziyaret her zaman, böyle bir alan kodu listeleri, devletler ve ülkeler gibi öğelerin bir dizi bir kayıt sayfası oluşturmak için çekilir. Ben veritabanı dahil değil yani ben PHP için de biraz taşıyabilirsiniz eminim.

6 gün, 14 saat, 57 dakika ve 58 saniye olarak, ben 12.69 dakikada k ve saniyede 211,43, ortalama 120.998.563 sorguları göstermek. Ben 79 maksimum eşzamanlı bağlantılarını listeleyen ediyorum. Bu son iki anlam ifade etmiyor. Ortalamalar 133 saatte MIB'e ve Gönderilmiş ortalamaları dakikada 1.997 MiB aldı.

6 Cevap

Eğer tablolar satır milyonlarca var ve doğru dizinleri kullanarak değilseniz, size sunucu düşecek ... sorguları ultra-optimize iseniz: sorgu sayısından daha fazla, muhtemelen ne konularda nasıl ne olduğunu ve , sağ dizin ile, ve / veya fazla veri yok, size sunucu yaşayacak.

Sen en azından bu indeksleri kullanılarak / optimize olup olmadığını görmek için, EXPLAIN en çok kullanılan sorguları kullanmak isteyebilirsiniz ;-)

Then, you will probably want to add so kind of caching mecanism, like APC or memcached ; at least if you can...
For instance, the lists states and countries probably never change : it could be cached, to not hit the database thousands of times, but just, say, once a day or once an hour.

biraz daha ipucu:

A - Eğer (Eğer mümkün olduğunca çok kaçınmak için deneyin ya da en azından) NXN zamanı sorguları çalıştırmak emin olun. Ne ben bu demek gitmeyin:

-query -while(query) - query2 - while (query2) - end while query2 -end while query

ve kesinlikle üçüncü düzeyine gitmek (n ^ 3) yok ...

B - hızı hakkında başka bir şey: Eğer zorunda değilsiniz zaman - gitmeyen ve select * from. Eğer sadece ilk adını ve soyadını gerekiyorsa, sadece bu ... verileri daha hızlı geri gelecektir seçin. ve daha hızlı onu geçmesi mümkün olacak.

Sen yavaş sorgu günlüğünü etkinleştirmek ve izlemeye başlamak isteyebilirsiniz (http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html). Sorgu sayısı mutlaka yüksek bir yüke denk değildir - sürece sorgu önbelleği dizinleri vurmak, hatta daha iyi gibi. Birkaç kötü tasarlanmış sorgular olsa sunucu öldürebilir - ve bunları optimize zaman harcamak böylece yavaş sorgu günlük bu işaret edecektir.

Diğerleri söylediler, sorgu sayısı gerçekten önemli değil, daha sorgu türü ve nasıl iyi veritabanı endeksli olduğunu. Ayrıca, söz konusu başkası APC veya memcache gibi bir önbelleğe alma mekanizması bakmak, ama ben de bir php sınıfı önbellek sistemi reccommend gibi. Ben zend framework biri olduğunu biliyorum ve ben şahsen PEAR kütüphanesinden Cache_Lite kullanın. Eğer şeylerin php seviyesinde kesinlikle son güncellenmiş bilgi olması gerekmez db sorguları önbelleğe alabilir. Yani sayfa biterse, 10 sorgu diyorum ama bunlardan 2 veya 3 gerçekten sadece 5 veya on dakika boyunca diğer sorguları önbelleğe taze bilgi olması gerekir. Hatta bir dakika önbellek bir yüksek hacimli sitede işlem çok yarayacaktır.

Başka bir faktör barındırma ortamıdır. Paylaşılan barındıran bir sürü var, izin eşzamanlı veritabanı bağlantısının sayısı için bir sınır var ve bu sınır şaşırtıcı derecede düşük olabilir. İstatistiksel ziyaretçiler gün boyunca eşit olarak yayılır, ancak içerik belirli bir zamanda çıkıp bekliyoruz yeterince büyük bir kitleye varsa hepsi talep ediyorsanız, sizin mevcut bağlantıları maxing bitebileceğini varsayarak, genellikle ince bulunuyor dar bir zaman dilimi içinde komut (ve açılış veritabanı bağlantıları).

Bakmak için en iyi şey, sayfa başına sorgu sayısı, o da onlar sorguları ne tür araştırmak. Örneğin basit SELECT ifadeleri çok hızlı, ama birlikte 3 tablolar katılıyor ise, çok yavaş. Ayrıca veritabanı tabloları indeksler ve sınırları bağlıdır.

Esasen, biz gerçekten size anlatmak için yeterli bilgiye sahip değiliz. Hatta bir anda kullanıcı sayısının herhangi bir fikir olmadan, ne verdi ile oldukça yaramaz.