MySQL veri işleme için Web Sunucusu vs

6 Cevap php

Bu MySQL veri veya PHP veya Python gibi bir sunucu dili işlemek için hızlı olmadığını merak ediyordum. Ben SİPARİŞ gibi doğal işlevleri nedeniyle vb indeksleme, önbelleğe alma, MySQL daha hızlı olacaktır eminim, ama aslında (aynı rütbe sahip olarak çoklu girişleri dönen bağları dahil) rank hesaplama:

Sample SQL

SELECT TORCH_ID,
    distance AS thisscore,
    (SELECT COUNT(distinct(distance))+1 FROM torch_info WHERE distance > thisscore) AS rank
    FROM torch_info ORDER BY rank

Server

... Sadece bir SELECT TORCH_ID FROM torch_info ORDER BY score DESC yapmaya karşı ve daha sonra web sunucusu PHP rütbe anlamaya gibi.

6 Cevap

MySQL'in daha hızlı en non-kompleks hesaplamalara sahip olacaktır. Ancak, zaman veritabanı sunucusu% 90 tıkanıklık olduğu, bu yüzden gerçekten bu hesaplamalar ile veritabanı bogging tarafından bu eklemek istiyorsun? Kendimi oldukça yükünü dışarı bile web / uygulama sunucusu üzerine koydu, ama bu senin kararın.

Sayımı hızı kullandığınız hangi DB depolama motoru bağlı olacak ve tablo boyutu. Ben mySQL yapılan neredeyse her sayısı ve rütbe PHP belleğe aynı veri çekerek ve aynı işlemi yaparak daha hızlı olacağını sanıyorum rağmen.

Genel olarak, "Ben veritabanında verileri işlemek mi, ya da web sunucusu sorusu üzerine", "Duruma göre değişir" olduğu cevap.

  1. Bu başka bir web sunucusu eklemek kolaydır. Bu başka bir veritabanı sunucusu eklemek zordur. Eğer veritabanı kapalı yükü alabilir, bu iyi olabilir.
  2. Veri işleme çıkış gereken giriş çok daha küçük ise, veritabanında işleme yaparak veri aktarım yükü bir sürü önlemek mümkün olabilir. Basit bir örnek olarak, SELECT *, tablodaki her satır almak ve x = 3, yapabilirsiniz, sadece {[(birini seçmek için web sunucusu aracılığıyla onları yineleme aptalca olurdu 1)]}
  3. Sizin de belirttiğiniz gibi, veritabanı indeksler, vb kullanarak, kendi veri çalışması için optimize edilmiştir

Sıralama sayımı, sipariş dayanmaktadır. Daha hızlı bu işlevleri yapmak eğer öyleyse, o rütbe açıkça daha hızlı olacaktır.

A large part of your question is dependent on the primary keys and indexes you have set up. Assuming that torchID is indexed properly...

MySQL sunucu tarafı kodu daha hızlı olduğunu göreceksiniz.

Yapmak isteyebilirsiniz başka bir husustur bu SQL adı olacak sıklığıdır. Bunu daha kolay bir rütbe sütun ve her sicili içeri giriyor gibi bu veritabanına küçük Bulunmuş bir sürü neden olacağını güncelleştirme oluşturmak için bulabilirsiniz, "ağır" bir dizi karşı veritabanınıza vurur.

Yani 10.000 kayıtları, günde bir kez bu sorguyu vurmak 1000 kullanıcı ve her gün yeni bir sicili koymak 100 kullanıcımız var diyelim. Ben doğrusu DB bunların% 10, sonra sıralama sorgu 1,000 kez bir gün vurmak olsun var her rekoru (9,999) isabet 100 güncellemeler yaparak olurdu.

Benim iki sent.

Test işlemleri yerine gönderme bireysel sorgular çalışıyorsa sen 2-3 kat daha hızlı performans almak çünkü sonra ben ODBC DSN üzerinden JDBC sürücüsü kullanarak öneriyoruz. (Im senin senin testlerinde burada bir odbc dsn varsayarak)