PostgreSQL maliyet modeli bellek kullanımını ve önbellek etkilerini hesaba katmıyor
Öne çıkanlar
- Dönen mekanik disklerde ölçülen rastgele erişim maliyeti varsayılan 4,0 yerine yaklaşık 125 çıktı.
- Mevcut sorgu planlayıcısı bellek kullanımını ve önbellek tahliye maliyetlerini modellemiyor.
- Sıralı taramalar bellekten veri tahliye ederken dizin taramaları aktif veri kümesini koruyor.
- random_page_cost ayarı donanım profillemesi yerine sorgu izleme verileriyle optimize ediliyor.
PostgreSQL veri tabanı geliştiricisi Tomas Vondra, random_page_cost parametresi üzerine yaptığı yeni analizleri ve depolama testlerinin sonuçlarını paylaştı. Dönen mekanik disklerde rastgele girdi ve çıktı maliyetinin varsayılan 4,0 değerinden katbekat yüksek çıkarak 125 seviyesine ulaştığını belirten Vondra, sistemin ham I/O maliyetlerinden ziyade sorgu planlayıcısının eksiklerini dengeleyen bir vekil işlevi gördüğünü açıkladı.
Mevcut maliyet modeli hesaplamalarını CPU ve depolama kaynakları üzerinden yürütürken bellek tüketimini ve önbellek mekanizmalarını büyük oranda göz ardı ediyor. Örneğin soğuk veriler üzerinde çalışan sıralı taramalar tüm belleği boşaltarak sisteme zarar verebiliyor; buna karşılık rastgele erişim kullanan dizin taramaları yalnızca ilgili küçük veri kümesine dokunarak aktif veri kümesinin bellekte kalmasını sağlıyor. Planlayıcı bu farkı gözetemediği için sistem kaynakları tekil sorgu bazında hatalı maliyetlendirilebiliyor.
Sorgu planlayıcısının eşzamanlı çalışan diğer işlemleri ve bellek baskısını hesaba katmadığına işaret eden Vondra, donanımı profilleme yoluyla tek bir ideal parametre değeri bulunamayacağını kaydetti. random_page_cost ayarının sisteme ve iş yüküne özgü olarak pg_stat_statements izleme verileriyle manuel test edilmesi gerektiği bildirildi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.