Ben MySQL küçümseyen muyum?

7 Cevap php

Ben zaten kendi kütüphanesinde bulunması içeriği (a la Last.fm) dayalı olarak kullanıcılara içerik önerir web sitemdeki bir özelliği uygulamak üzereyim. Tek bir tablo onlar eklediğiniz tüm içerik kayıtları tutan, bu yüzden bir satır gibi görünebilir:

--------------------
| userid | content |
--------------------
|   28   |    a    |
--------------------

Ben bir kullanıcı için bazı içerik tavsiye etmek istediğiniz zaman, ben içerik bir kendi kütüphanesinde eklenen tüm kullanıcı id almak için sorgu kullanabilirsiniz. Daha sonra, bu kullanıcı kimliği yıllardan dışarı, ben bu kullanıcılar (fx. 'b') arasında bir sonraki en yaygın içerik bulur başka bir sorgu yapmak ve göstermek kullanıcıya söyledi.

Ben burada büyük resme düşünüyordum benim sorundur. Sonunda benim site bu MySQL yanıtı çok yavaş yapacaktır, tablodaki 500.000 satır gibi bir şey yapacak ya da ben burada MySQL küçümseyen olduğumu söylüyorlar?

7 Cevap

Sen bunu test ettik kadar bunu biliyorum, bu yüzden prototip başlamaz.

Tipik olarak, 500 000 satır şey yanındadır. Veri sorgulama hala hızlı olsa da - benim tablolar 50 milyonlarca ulaştığınızda ben eski verileri temizlemek zorunda zaman o bir süre alır, neden biraz endişe.

But this all depends on the kinds of queries you need. Queries spanning all those 50 million rows would indeed be very slow, queries only touching 50k of those 50 millions are fast. And for your problem, you need to measure your queries, tune your queries, tables/indexes and mysql itself.

Eğer sorguları için doğru dizin tasarım eğer 500 000 bir sorun olmayacaktır. Bu sizin donanım yapılandırmasına bir topoloji de bağlıdır, ama genel olarak ok olmalıdır.

Asıl soru olmalıdır:

O verinin 500,000 satırlara bir tamsayı dizin ile çalışmak olamazdı eğer MySQL'in kullanım uzun zaman önce ölmüş olacağını varsaymak makul mi?

Iyi çalışması gerekir herhangi RAM veya CPU veya depolama motoru kısıtlamaları yoktur sağlanması.

Veritabanları sorguları bu tür için yapılır. Bunu azaldığında eğer disk alanı ve RAM ayarlamanız gerekebilir, ancak doğru dizinleri ile gitmek için güvenli olmalıdır.

500.000 madde tablolar Foxpro zamanlarda önemli bir şey değildi - ki 10 yıl önce ;) Bugün tamamen başka bir şey değildir. Sadece uygun donanım çalıştırmak emin olun ;)

Kısacası: Evet, MySQL hafife (ve belki de en ticari, genel olarak ilişkisel veritabanı kullanılır) vardır. Onlar daha 500k satır desteklemek için tasarlanmış olmasaydı, muhtemelen dünyanın en popüler veritabanlarından biri olmazdı.

Ben o doğru onun sınırlarını bilmek için sisteminizi sınamak stres gerektiğini işaret çünkü nos, iyi bir cevap olduğunu düşünüyorum; ama o da bir dizi sağlar (50 milyon - Ben bunun için kefil olamaz, ama bu boyutta veritabanları üzerinde çalışmış gibi geliyor), en azından size basketbol sahası ne kadar büyük bir fikir vermek için.

Yani: 500k? Olabilir. 50000000000? Bir hakkında daha az emin.

Satır ham sayısı daha önemli uygun indeksleme olacak, ve (daha çok) yazmak sorguları ne tür edilir.

500k satırları karşı sorgularken endeksli, özellikle bir şey değildir. Öte yandan, yazarsanız bir 3-yollu olduğunu, 500k * 500k * 500k satır tam bir tablo tarama gerektirir, o zaman bir sorun var olacak kendini katılın.