Laboratuvar / Açık yöntem
Veritabanı optimizasyonu: sorgu ve indeks
200.000 siparişten rapor: 1,13 sn → 7,19 ms. Sentetik laboratuvar; 10 tekrarın medyanı. Kod ve ham veri açık.
İndekssiz sorguşu sistemeAynı sorgu + bileşik indeks
SQLite 3.46 LABORATUVAR ÖLÇÜMÜ
Bütün tabloyu taramak yerine gereken kaydı bulun.
Müşteri bazında açık sipariş toplamları. Aynı SQLite motorunda, aynı sorgunun indeks öncesi ve sonrası.
Rapor ve liste ekranları daha az CPU işiyle sonuç üretir. Önce sorgu planını düzeltmek, donanım büyütme ihtiyacını azaltabilir.
İndekssiz sorgu
Her müşteri özeti için sipariş tablosu taranır.
- CPU süresi
- 1,129 sn
Aynı sorgu + bileşik indeks
Müşteri, durum ve tutar alanlarını kapsayan indeks kullanılır.
- CPU süresi
- 7,187 ms
İndeks + toplu sorgu kontrolü
Aynı sonuç için toplulaştırılmış alternatif sorgu da çalıştırıldı.
- CPU süresi
- 10,16 ms
Çubuklar sıfırdan başlar; tüm uygulamalarda aynı süre ölçeği kullanılır.
Sorgudaki müşteri ve durum filtrelerine, tutarı da kapsayan bileşik indeks ekledik. Toplu sorgu alternatifini ayrı kontrol olarak tuttuk.
Tüm yük noktaları ve ölçüm tablosu
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz sorgu | 5,995 ms | 5,996 ms |
| Aynı sorgu + bileşik indeks | 0,146 ms | 0,147 ms |
| İndeks + toplu sorgu kontrolü | 0,213 ms | 0,215 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz sorgu | 16,785 ms | 16,786 ms |
| Aynı sorgu + bileşik indeks | 0,227 ms | 0,228 ms |
| İndeks + toplu sorgu kontrolü | 0,292 ms | 0,293 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz sorgu | 55,749 ms | 55,743 ms |
| Aynı sorgu + bileşik indeks | 0,536 ms | 0,538 ms |
| İndeks + toplu sorgu kontrolü | 0,694 ms | 0,695 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz sorgu | 175,175 ms | 175,158 ms |
| Aynı sorgu + bileşik indeks | 1,23 ms | 1,231 ms |
| İndeks + toplu sorgu kontrolü | 1,695 ms | 1,696 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz sorgu | 345,649 ms | 345,617 ms |
| Aynı sorgu + bileşik indeks | 2,292 ms | 2,298 ms |
| İndeks + toplu sorgu kontrolü | 3,264 ms | 3,265 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz sorgu | 565,92 ms | 565,9 ms |
| Aynı sorgu + bileşik indeks | 3,691 ms | 3,693 ms |
| İndeks + toplu sorgu kontrolü | 5,213 ms | 5,214 ms |
| Uygulama | Medyan süre | CPU süresi |
|---|---|---|
| İndekssiz sorgu | 1,129 sn | 1,129 sn |
| Aynı sorgu + bileşik indeks | 7,188 ms | 7,187 ms |
| İndeks + toplu sorgu kontrolü | 10,158 ms | 10,16 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 = 200.000 Sipariş kaydı.
Azalan CPU süresi / ay3,1162 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 |
|---|---|---|
| 1.000 | 5,99 ms | 0,15 ms |
| 3.000 | 16,78 ms | 0,23 ms |
| 10.000 | 55,75 ms | 0,54 ms |
| 30.000 | 175,17 ms | 1,23 ms |
| 60.000 | 345,65 ms | 2,29 ms |
| 100.000 | 565,92 ms | 3,69 ms |
| 200.000 | 1.129,16 ms | 7,19 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
- 200 müşteri; 1.000–200.000 deterministik sipariş. Her kolun bütün sonuçları ve kuruş toplamları eşit.
- Araçlar
- PHP 8.4.26 · SQLite 3.46.1 · hrtime / getrusage · OPcache / JIT off · native arm64 Docker
- Tekrarlar
- 7 yük × 5 uygulama × 10 tekrar; ayrıca 70 ısınma gözlemi. Her ölçüm saklandı, kol sırası dönüşümlü.
Bütün tabloyu taramak yerine gereken kaydı bulun.
Müşteri bazında açık sipariş toplamları. Aynı SQLite motorunda, aynı sorgunun indeks öncesi ve sonrası.
Aynı PHP/SQLite sürümleri, aynı sentetik kayıtlar, 200 müşteri. İki ısınma ardından her kol/boyut için 10 tekrar; bütün sonuç dizileri bağımsız oracle ile eşit. PHP toplam haritası her tekrarda yeniden kurulur. SQL okuma süreleri sıcak bellek içi veride; veri yükleme/indeks oluşturma dışında. İndeks boyutu ve tek kurulum gözlemi ham pakette ayrı. Birincil 200.000 kayıt noktası önceden seçildi.
Ölçüm betiğini inceleyin ↗İşinize ne kazandırır?
Rapor ve liste ekranları daha az CPU işiyle sonuç üretir. Önce sorgu planını düzeltmek, donanım büyütme ihtiyacını azaltabilir.
Değişiklik ve kapsam
Sorgudaki müşteri ve durum filtrelerine, tutarı da kapsayan bileşik indeks ekledik. Toplu sorgu alternatifini ayrı kontrol olarak tuttuk.
SQLite 3.46.1, sıcak bellek içi veri, 200 müşteri. İndeks oluşturma ve yazma maliyeti süre grafiğine dahil değil; ham pakette indeks boyutu ve kurulum süresi var. Başka motorların sonucu değildir.
İndeksin bedeli ve alternatif sorgu
200.000 kayıtta indeks 3,899,392 bayt ek alan kullandı; tek oluşturma gözlemi 77.56 ms. Yazma yükü bu okuma deneyinin kapsamında değil. İndeksli toplu sorgu alternatifi de tabloda: ölçülmüş olması, her sorgudan hızlı olduğu anlamına gelmiyor. Sorgu planları taramadan kapsayan indeks aramasına geçişi gösterir.
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
YZSorgudaki müşteri ve durum filtrelerine, tutarı da kapsayan bileşik indeks ekledik. Toplu sorgu alternatifini ayrı kontrol olarak tuttuk.
DoğrulamaÇıktı eşitliği bağımsız kontrolle doğrulandı; bütün tekrarlar pakette tutuldu.