Laboratuvar / Açık yöntem

5 milyon kayıtta dönem sonu raporu

5.000.000 siparişten rapor: 1,22 dk → 175,5 ms. Sentetik laboratuvar; 10 tekrarın medyanı. Kod ve ham veri açık.

TamamlandıKOBİKurumsal BTPartner

İndekssiz ay sonu raporuşu sistemeAynı rapor + kapsayan indeks

SQLite 3.46 LABORATUVAR ÖLÇÜMÜ

5 milyon siparişten 500 müşteri bakiyesi.

Açık sipariş bakiyeleri için aynı raporu çalıştırdık. İş kuralı ve motor aynı; her müşteri için bütün tabloyu tarayan erişim değişti.

İşinize etkisi

Ay sonu kontrolü için yeniden çalıştırılan rapor daha kısa sürer ve daha az CPU işi yapar. Ekip rapor sonucunu beklemek yerine tutarları incelemeye geçebilir.

ÖNCEİndekssiz ay sonu raporu
YENİLENENAynı rapor + kapsayan indeks
Sipariş kaydı5.000.000
100.000Yalnız ölçülen yükler5.000.000
20× hızlandırılmış
AYNI İŞ · AYNI VERİ10 tekrar · medyan
01

İndekssiz ay sonu raporu

Her müşteri bakiyesi için bütün sipariş tablosu yeniden taranır.

1 dk 13,11 sn
CPU süresi
1 dk 13,1 sn
02

Aynı rapor + kapsayan indeks

Aynı SQL, müşteri ve durum anahtarından gerekli tutarlara ulaşır.

175,502 ms
CPU süresi
175,473 ms
03

İndeks + toplu sorgu kontrolü

Siparişleri bir kez gruplayan alternatif; hızlı veya yavaş bütün sonuçlar korunur.

254,653 ms
CPU süresi
254,617 ms

Çubuklar sıfırdan başlar; tüm uygulamalarda aynı süre ölçeği kullanılır.

Tamamlanma süresi azaldı99,8%Süre farkı: 1 dk 12,93 snEski uygulama → yenilenen uygulama
Ne değişti?

Müşteri, sipariş durumu ve tutarı kapsayan bileşik indeks ekledik. Önce ve sonra SQL metni aynı. Toplu sorgu alternatifini de ayrı kontrol olarak ölçtük.

Tüm yük noktaları ve ölçüm tablosu
100.000 · Sipariş kaydı
UygulamaMedyan süreCPU süresi
İndekssiz ay sonu raporu1,435 sn1,435 sn
Aynı rapor + kapsayan indeks3,833 ms3,835 ms
İndeks + toplu sorgu kontrolü5,507 ms5,509 ms
1.000.000 · Sipariş kaydı
UygulamaMedyan süreCPU süresi
İndekssiz ay sonu raporu14,751 sn14,749 sn
Aynı rapor + kapsayan indeks36,498 ms36,504 ms
İndeks + toplu sorgu kontrolü52,952 ms52,941 ms
5.000.000 · Sipariş kaydı
UygulamaMedyan süreCPU süresi
İndekssiz ay sonu raporu1 dk 13,11 sn1 dk 13,1 sn
Aynı rapor + kapsayan indeks175,502 ms175,473 ms
İndeks + toplu sorgu kontrolü254,653 ms254,617 ms
İş yükünüzle CPU maliyeti

Ölçülen işlemci süresini kendi aylık hacminizle karşılaştırın.

Bir çalıştırma = 5.000.000 Sipariş kaydı.

Azalan CPU süresi / ay202,5564 saat

İşlem bedeli farkı / ay—Birim bedel girildiğinde hesaplanır.

Laboratuvar CPU süresi × girdiğiniz hacim ve birim bedel. Hosting faturası tahmini değildir; boşta kaynak, ağ, depolama, lisans ve geçiş dahil değil.

Kendiniz deneyin

Kayıtlı laboratuvar sonuçlarını birlikte oynatın.

Ölçek arttığında

İş yüküne göre süre

  • Önce
  • Sonra

İş yüküne göre süre (ms)

020.00040.00060.00080.000100.0001.000.0005.000.00073.106,21 ms175,5 ms

Veri noktasını seçin

020.00040.00060.00080.000100.0005.000.000175,5 ms

Veri noktasını seçin

Sipariş kaydıİşaretçiler: ölçülen noktalar
Tablo olarak göster
İş yüküne göre süre
Sipariş kaydıÖnceSonra
100.0001.434,97 ms3,83 ms
1.000.00014.751,16 ms36,5 ms
5.000.00073.106,21 ms175,5 ms

Nasıl ölçtük?

Ortam, protokol ve teknik değerlendirme

Ortam ve veri

Ortam
Apple M3; Docker Linux arm64, 2 CPU kotası, 1 GiB bellek; PHP 8.4.26 / SQLite 3.46.1.
Veri seti
500 müşteri, 100.000 / 1.000.000 / 5.000.000 sipariş. İki veritabanına akışla aynı kayıtlar eklenir; 500 satırlık tam sonuçlar bağımsız PHP ve Python toplamlarıyla eşit.
Araçlar
PHP 8.4.26 · SQLite 3.46.1 · hrtime / getrusage · native arm64 Docker · independent Python oracle
Tekrarlar
3 boyut × 3 sorgu × 10 tekrar; ayrıca 18 ısınma gözlemi. Bütün 108 sonuç ve tüm müşteri bakiyeleri yayımlanır.
Ham ölçüm verisini açın ↗

5 milyon siparişten 500 müşteri bakiyesi.

Açık sipariş bakiyeleri için aynı raporu çalıştırdık. İş kuralı ve motor aynı; her müşteri için bütün tabloyu tarayan erişim değişti.

500 müşterinin açık sipariş tutarı, sentetik ve deterministik kuruş verisi. Üç kayıt boyutu ve üç kol deneyden önce sabitlendi. Aynı SQL indeks öncesi/sonrası ve toplu sorgu kontrolü. İki ısınma ardından 10 tekrar; kol sırası dönüşümlü. Her tekrarın tam 500 satırı bağımsız oracle ile eşit. Okuma süreleri yükleme, indeks kurma ve sonuç doğrulama dışında; her boyutta yeni iki bellek içi veritabanı, tekrarlar sıcak. Yazma yükü ve parasal fatura etkisi ölçülmedi.

Ölçüm betiğini inceleyin ↗

İşinize ne kazandırır?

Ay sonu kontrolü için yeniden çalıştırılan rapor daha kısa sürer ve daha az CPU işi yapar. Ekip rapor sonucunu beklemek yerine tutarları incelemeye geçebilir.

Değişiklik ve kapsam

Müşteri, sipariş durumu ve tutarı kapsayan bileşik indeks ekledik. Önce ve sonra SQL metni aynı. Toplu sorgu alternatifini de ayrı kontrol olarak ölçtük.

500 müşteri; 100 bin, 1 milyon ve 5 milyon sentetik sipariş. SQLite 3.46.1, sıcak bellek içi veri, aynı donanım. Okuma süresine veri yükleme ve indeks kurma dahil değil; kurulum süresi ve ek depolama ayrıca yayımlanır.

Her veri boyutunda bütün sorgular

Sipariş İndekssiz İndeksli aynı sorgu Toplu sorgu kontrolü
100,000 1.435 s 0.004 s 0.006 s
1,000,000 14.751 s 0.036 s 0.053 s
5,000,000 73.106 s 0.176 s 0.255 s

İndeksin kurulum ve alan maliyeti

5 milyon kayıtta indeks 100,130,816 bayt ek alan ayırdı. Tek kurulum gözlemi 4.086 saniye. Bu değerler raporun okuma medyanına dahil değildir; indeks yazma yükünü de değiştirebilir ve bu deney o yükü ölçmez. Sorgu planları ve bütün kurulum gözlemleri.

Kendi sisteminizde başlangıç

En çok bekleten işlemi, veri miktarını ve yoğun saatleri birlikte belirleyelim. Önce bu işin baz ölçümünü alır, sonra kodu ve erişim biçimini değiştirip aynı sonucu karşılaştırırız.

Ne yaptık?

  1. İş kuralı ve veri

    YZSentetik iş akışı, testler ve ölçüm otomasyonu hazırlandı.

    DoğrulamaYayınlanan kod ve ham sonuçlar incelemeye açıktır; müşteri projesi değildir.

  2. Uygulama değişikliği

    YZMüşteri, sipariş durumu ve tutarı kapsayan bileşik indeks ekledik. Önce ve sonra SQL metni aynı. Toplu sorgu alternatifini de ayrı kontrol olarak ölçtük.

    DoğrulamaÇıktı eşitliği bağımsız kontrolle doğrulandı; bütün tekrarlar pakette tutuldu.