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.
İ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.
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.
İndekssiz ay sonu raporu
Her müşteri bakiyesi için bütün sipariş tablosu yeniden taranır.
- CPU süresi
- 1 dk 13,1 sn
Aynı rapor + kapsayan indeks
Aynı SQL, müşteri ve durum anahtarından gerekli tutarlara ulaşır.
- CPU süresi
- 175,473 ms
İndeks + toplu sorgu kontrolü
Siparişleri bir kez gruplayan alternatif; hızlı veya yavaş bütün sonuçlar korunur.
- CPU süresi
- 254,617 ms
Çubuklar sıfırdan başlar; tüm uygulamalarda aynı süre ölçeği kullanılır.
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
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz ay sonu raporu | 1,435 sn | 1,435 sn |
| Aynı rapor + kapsayan indeks | 3,833 ms | 3,835 ms |
| İndeks + toplu sorgu kontrolü | 5,507 ms | 5,509 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz ay sonu raporu | 14,751 sn | 14,749 sn |
| Aynı rapor + kapsayan indeks | 36,498 ms | 36,504 ms |
| İndeks + toplu sorgu kontrolü | 52,952 ms | 52,941 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz ay sonu raporu | 1 dk 13,11 sn | 1 dk 13,1 sn |
| Aynı rapor + kapsayan indeks | 175,502 ms | 175,473 ms |
| İndeks + toplu sorgu kontrolü | 254,653 ms | 254,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)
Tablo olarak göster
| Sipariş kaydı | Önce | Sonra |
|---|---|---|
| 100.000 | 1.434,97 ms | 3,83 ms |
| 1.000.000 | 14.751,16 ms | 36,5 ms |
| 5.000.000 | 73.106,21 ms | 175,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.
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?
İş 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.
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.