PostgreSQL, 2018'de sürüm 11 ile JIT (Just-in-Time) derlemeyi tanıttı. Bu özellik, veritabanının ifadeleri yorumlama ve dahili veri dönüşümleri (tuple deforming) için satır bazında verimsiz döngüler kullanma sorununu çözerek, özellikle yoğun ifade içeren iş yüklerinde önemli bir performans artışı sağlıyor. Ancak, standart LLVM tabanlı JIT derleme süresi oldukça yavaştır; derleme için on ila yüzlerce milisaniye sürebilir. Bu durum, LLVM JIT'in tipik OLTP sorgularında sorgunun kendi yürütme süresini aşan bir ek yüke neden olmasına yol açar.
pg_jitter, bu soruna çözüm olarak PostgreSQL için sljit, AsmJIT ve MIR olmak üzere üç alternatif JIT backend'i sunar. Bu backend'ler, milisaniyeler yerine mikrosaniye düzeyinde derleme süreleri sunarak JIT'i çok daha geniş bir sorgu yelpazesi için değerli hale getirir. Örneğin, sljit on ila yüzlerce mikrosaniye, AsmJIT yüzlerce mikrosaniye ve MIR yüzlerce mikrosaniye ila birkaç milisaniye içinde derleme yapabilirken, LLVM on ila yüzlerce milisaniye sürer. pg_jitter'ın backend'leri, derleme performans farkları göz ardı edildiğinde bile çoğu durumda LLVM'den daha hızlı yürütme süreleri sunar.
Farklı backend'ler farklı senaryolarda öne çıkar: sljit, tüm iş yüklerinde yorumlayıcıdan %5-25 daha hızlı olması ve olağanüstü derleme hızıyla çoğu senaryo için en iyi seçenektir. AsmJIT, özel tuple deforming yetenekleri sayesinde geniş satırlı/deformasyon yoğun sorgularda %32'ye kadar hızlanma sağlar. MIR ise sağlam kazançlar sunarken en taşınabilir backend'dir. pg_jitter kullanırken, jit_above_cost parametresini varsayılan yüksek değerden daha düşük, yaklaşık 200 ila birkaç bin arasına ayarlamak önerilir. Ancak, çok hızlı sorgular için JIT'ten kaçınmak, işlemci önbelleği ve bellek baskısı gibi faktörler nedeniyle performans düşüşlerini önlemek adına tavsiye edilir.
pg_jitter, PostgreSQL'in JIT derleme mekanizmasını hızlandırarak veritabanı performansını önemli ölçüde artırıyor ve JIT'i daha geniş bir kullanım alanı için erişilebilir kılıyor.