deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Drizzle 1.0 RC, PostgreSQL benchmark'ında Prisma 8 RC'yi geride bırakıyor ama derin sayfalama Prisma 7'yi öne çıkarıyor

Bağımsız bir benchmark, Drizzle 0.45, Drizzle 1.0 RC, Prisma 7 ve Prisma 8 RC'yi aynı PostgreSQL 17 veritabanı üzerinde karşılaştırıyor; Drizzle 1.0 çoğu sorguda önde, ancak derin OFFSET sayfalaması tabloyu tersine çeviriyor.

Drizzle 1.0 RC, PostgreSQL benchmark'ında Prisma 8 RC'yi geride bırakıyor ama derin sayfalama Prisma 7'yi öne çıkarıyor

Ekim 2026 ortasında dev.to üzerinde yayımlanan bağımsız bir benchmark, dört TypeScript veri erişim istemcisini aynı PostgreSQL 17 veritabanı üzerinde test etti: Drizzle 0.45.4, Drizzle 1.0.0-rc.4 sürüm adayı, Prisma 7.10.1 ve Prisma 8.0.0-rc.18 sürüm adayı. Yazarın güncellemeleri burada yayımlayacağını belirttiği özgün yazı fabwaseem.com adresinde.

Zamanlama dikkat çekici çünkü her iki proje de ana sürümler arasındaki geçiş aşamasında. Yazara göre Drizzle 1.0 hâlâ npm üzerinde rc dist-tag'ini taşırken 0.45.4 latest konumunda; buna karşılık Prisma 8'in sürüm adayı, düz bir npm install komutunun zaten çektiği sürüm. Bu nedenle her iki aracın hem stabil hem de gelecek hatlarını kapsayan rakamlar alışılmadık kadar güncel.

Neler ölçüldü

Testler yerel olarak koşuldu: istemciyle aynı makinede (15 GB RAM'e sahip 8 vCPU'lu Xeon) PostgreSQL 17.11, Node.js 24.22.0 ve Post.authorId üzerinde indeks bulunan 1.000 kullanıcı ile 10.000 gönderiden oluşan bir veri seti. Her durum için 200 ısınma çağrısının ardından 2.000 zamanlanmış çağrı yapıldı; her istemci için üç kez tekrarlandı ve çalışmalar arasında eklenen satırlar silindi; raporlanan rakamlar medyan değerler. Yazar ayrıca Drizzle 1.0'ı jit seçeneği açıkken de test etti.

Öne çıkan rakamlar

Basit işlemlerde dört istemci neredeyse ayırt edilemezdi. Birincil anahtar aramaları 0.121 ms (Drizzle 1.0 rc.4) ile 0.195 ms (Prisma 8 rc.18) arasında gerçekleşti; yazar bu farkın gerçek bir ağ üzerinden kaybolduğunu söylüyor. Tek satır eklemeler benzer göründü: Drizzle 1.0 için 0.139 ms'den Prisma 8 için 0.208 ms'ye.

İç içe okumanın ilk sayfası — gönderileriyle birlikte 20 kullanıcı — farkı açtı: Drizzle 1.0 rc.4 sayfayı 0.561 ms'de döndürürken, Drizzle 0.45.4 ve Prisma 7.10.1 yaklaşık 0.72–0.73 ms civarında kümelendi ve Prisma 8 rc.18 1.185 ms aldı.

Derin sayfalama ise sıralamayı tersine çevirdi. OFFSET 960 değerinde en hızlı istemci 0.749 ms ile Prisma 7.10.1 oldu; Drizzle 0.45.4 4.650 ms, Drizzle 1.0 rc.4 5.164 ms ve Prisma 8 rc.18 8.060 ms sürdü. Yazar bu yaygın kalıbı 6–19 katlık bir fark olarak özetliyor ve bunun nedeninin ORM'nin kendi yükü değil, üretilen SQL'in biçimi olduğunu söylüyor.

İki yan bulgu öne çıkıyor. Satır eşleyicilerini tam zamanında derlediği belgelenen Drizzle 1.0'ın jit bayrağı burada ölçülebilir bir fark yaratmadı; çünkü zamanın gittiği yer 20 satırı eşlemek değil. Ve çalıştırma sonrası yerleşik bellek 251 MB (Drizzle 0.45.4) ile 404 MB (Prisma 8) arasında değişti; diğerleri 289 ile 296 MB arasındaydı.

Derin sayfalama sonucu neden tersine çeviriyor

Drizzle ve Prisma 8, ilişkileri her üst satır için bir JSON alt sorgusu inşa eden tek bir SQL ifadesi içinde yüklüyor. PostgreSQL OFFSET'i en son uyguladığı için veritabanı atlanan her satır için JSON'u oluşturup sonra çöpe atıyor; yazarın EXPLAIN ANALYZE çıktısı, OFFSET 960'da posts alt sorgusunun 20 kullanıcıya hizmet etmek için 980 kez çalıştığını gösterdi. Prisma 7 ise varsayılan olarak yalnızca gerçekten gereken satırlara dokunan iki sorgu gönderiyor; derin sayfa zamanlamasının düz kalmasının nedeni bu. Yazarın varılan sonuç, çözümün kütüphanede değil sorgu kalıbında yattığı yönünde: iki sorgulu yükleme veya keyset sayfalama bu maliyeti tamamen ortadan kaldırıyor.

Aralarında seçim yapmak

Dağıtım boyutu açısından benchmark, Drizzle'ın 18 paketle 21–30 MB kurulduğunu ve paketlenmiş soğuk başlangıcının yaklaşık 35 ms olduğunu; Prisma 7'nin 329 MB olduğunu ve soğuk başlangıcının kabaca 100 ms sürdüğünü; Prisma 8'in ise 130 MB olduğunu ama bu testte soğuk başlangıcın yaklaşık 370 ms aldığını raporluyor.

Daha geniş dengelenme ise üslupla ilgili. Drizzle tabloları TypeScript'te tanımlıyor ve kod üretimi adımı olmayan tipli bir SQL builder sunuyor; Prisma ise veriyi kendi şema dilinde modelliyor ve bir istemci üretiyor — Prisma 7 schema.prisma ve prisma generate üzerinden, Prisma 8 ise contract.prisma'ya ve zincirleme bir sorgu API'sine geçiyor. Yazarın tavsiyesi: SQL ile düşünüyorsanız, serverless veya edge runtime'lara dağıtıyorsanız ve en küçük ayak izini istiyorsanız Drizzle'ı seçin; yönlendirilmiş iş akışını, üretilen istemciyi ve Prisma Migrate'ı istiyorsanız Prisma 7'yi seçin; ve üretim ortamınızı herhangi bir sürüm adayına taşımadan önce genel kullanıma sunulmalarını bekleyin.

Neden önemli

Drizzle ve Prisma aynı anda ana sürüm değiştiriyor ve bu, dört hattın tamamının aynı donanım, aynı veri ile karşılaştırıldığı nadir bir durum. Ayrıca performans tartışmasını yeniden çerçeveliyor: sonuçlardaki en büyük fark ORM yükünden değil, her aracın iç içe okumaları SQL'e nasıl derlediğinden geliyor — ve ilişkilerle birlikte sayfalı listeler çoğu uygulamanın sürekli çalıştırdığı bir kalıp. Veri katmanı seçen ya da yükseltme kararı veren ekipler, her seçeneğin nerede hızlı, nerede olmadığı ve hangi farkların ayarlanabilir değil mimari olduğuna dair güncel kanıt elde ediyor.

  • #drizzle-orm
  • #prisma
  • #typescript
  • #postgresql
  • #orm
  • #benchmarks

İlgili yazılar