天天看點

PostgreSQL 10.0 preview 功能增強 - 緩存自動預熱, 直達性能巅峰

postgresql , 10.0 , 自動預熱緩存

資料庫的shared buffer可以用來存儲經常使用的資料塊,以提升效率。通過lru算法老化不常用的資料塊。

是以在生産資料庫中,shared buffer中通常是熱資料。 

資料庫如果重新開機,或者發生主備切換,緩存中的熱資料需要從磁盤(或者os page cache)重新載入資料庫的shared buffer。

當這個事情發生在業務高峰期時,由于熱資料未在資料庫緩存中,通路将會變慢,使用者的感覺可能是請求變慢了。

為了提升使用者體驗,減少請求的響應時間的抖動,postgresql 10.0推出了自動預熱緩存的技術。

也就是說shared buffer的block list chain會記錄下來,下次啟動時,自動載入shared buffer.

這個patch的讨論,詳見郵件組,本文末尾url。

postgresql社群的作風非常嚴謹,一個patch可能在郵件組中讨論幾個月甚至幾年,根據大家的意見反複的修正,patch合并到master已經非常成熟,是以postgresql的穩定性也是遠近聞名的。

<a href="https://commitfest.postgresql.org/13/848/">https://commitfest.postgresql.org/13/848/</a>

<a href="https://www.postgresql.org/message-id/flat/cad__ougw7kc+1-cga8gm0t+fuuhqpyr9aow6ozx48sbh=v8bww@mail.gmail.com#cad__ougw7kc+1-cga8gm0t+fuuhqpyr9aow6ozx48sbh=v8bww@mail.gmail.com">https://www.postgresql.org/message-id/flat/cad__ougw7kc+1-cga8gm0t+fuuhqpyr9aow6ozx48sbh=v8bww@mail.gmail.com#cad__ougw7kc+1-cga8gm0t+fuuhqpyr9aow6ozx48sbh=v8bww@mail.gmail.com</a>