<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Muhammet Şafak — Veritabanı &amp; sorgu araştırmaları</title><description>Index stratejisi, sorgu planı ve bağlantı yönetiminin gerçek veri hacmi altında ödettiği bedel; şema ve migration kararları dâhil.</description><link>https://www.muhammetsafak.com.tr/</link><language>tr-TR</language><lastBuildDate>Sun, 23 Aug 2026 00:00:00 GMT</lastBuildDate><managingEditor>info@muhammetsafak.com.tr (Muhammet Şafak)</managingEditor><atom:link href="https://www.muhammetsafak.com.tr/research/program/veritabani/rss.xml" rel="self" type="application/rss+xml"/><item><title>Partial index on beş dakikada üç yüz beş kat şişti — ve autovacuum bir kez bile gelmedi</title><link>https://www.muhammetsafak.com.tr/research/kuyruk-tablosunda-bloat-ve-autovacuum/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/research/kuyruk-tablosunda-bloat-ve-autovacuum/</guid><description>Canlı küme beş bin satırda sabit dururken partial index 0,125 MB&apos;dan 38,2 MB&apos;a çıktı — üç yüz beş kat. Küçüklüğü canlı satır sayısından geliyor, şişme hızı iş hacminden, ve ikisi arasında hiçbir bağ yok. Composite index oransal olarak daha az şişti (%42) ama mutlak olarak daha çok (+126 MB) ve şişerken belleğe sığmayı bıraktı: gecikmesi 0,52 ms&apos;den 61 saniyeye çıktı, kuyruğu 126 bine tırmandı. On beş dakikada 1,75 milyon ölü satır birikti ve autovacuum **bir kez bile koşmadı** — varsayılan eşik tablonun tamamına göre ölçekleniyor (50 + 0,2 × 10 milyon ≈ 2 milyon), churn ise küçük canlı kümede oluyor.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><category>veritabani</category><category>postgresql</category><category>index</category><category>kuyruk</category><category>autovacuum</category><category>bloat</category><category>performans</category></item><item><title>Partial index kuyruk tablosunu kırk bir kat küçültüyor — planner onu seçtiği sürece</title><link>https://www.muhammetsafak.com.tr/research/partial-index-kuyruk-tablosu/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/research/partial-index-kuyruk-tablosu/</guid><description>10 milyon ölü satırda partial index saniyede 11.537 iş çıkarıyor, index&apos;siz tablo 7. Composite index&apos;le hız farkı küçük (%6,9) ama boyut farkı değil: 7,6 MB&apos;a karşı 310,4 MB, ve partial tabloyla birlikte büyümüyor çünkü yalnız 5.000 canlı satırı indeksliyor. Asıl bulgu bunların hiçbiri: planner hazırlanmış bir deyimde generic plana geçtiği anda partial index tamamen devre dışı kalıyor — 11.752 tps 7&apos;ye, 0,68 ms 1,1 saniyeye düşüyor. Bin altı yüz otuz beş kat. Aynı koşulda composite index etkilenmiyor.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><category>veritabani</category><category>postgresql</category><category>index</category><category>kuyruk</category><category>skip-locked</category><category>outbox</category><category>performans</category></item><item><title>Postgres partial index&apos;i generic plana çevirmedi: kırk çalıştırma, kırk custom plan</title><link>https://www.muhammetsafak.com.tr/research/planner-generic-plana-ne-zaman-geciyor/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/research/planner-generic-plana-ne-zaman-geciyor/</guid><description>Postgres geçişi reddediyor. Partial index&apos;te kırk çalıştırmanın kırkı da custom plan — sayaç 40/0. Reddetmesinin sebebi tam olarak felaketin kendisi: generic plan partial index&apos;i kullanamaz, bu yüzden tahmini maliyeti yüksek çıkar ve planner onu seçmez. Composite index ise ders kitabındaki gibi altıncı çalıştırmada geçiyor (5/35) ve hiçbir şey kaybetmiyor. Yani bin altı yüz otuz beş katlık uçurum gerçek ama çitli: ona düşmek için `plan_cache_mode = force_generic_plan` yazmak gerekiyor.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><category>veritabani</category><category>postgresql</category><category>index</category><category>kuyruk</category><category>planner</category><category>prepared-statement</category></item></channel></rss>